vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
VB + Access: Beziehungen setzen 
Autor: Darth
Datum: 06.11.04 14:22

Moin,

ich sitze hier an einem Projekt wo ich mittels VB6 auf eine Access-DB zugreifen will, basierend auf dem sehr guten Workshop

Ich habe es auch schon geschafft das mir eine Access-DB erstellt wird mit allen Tabellen und Dateneigenschaften, nur etwas fehlt mir: Die Beziehungen

Wie schaffe ich es, beim Erstellen der DB durch VB, die Beziehungen zu schaffen und zu bestimmen, ob diese Beziehung(en) referentielle Integrität haben?

Oder ist dies garnicht notwendig wenn ich die Daten via VB nachher bearbeite, was ich mir im Moment eigendlich nicht vorstellen kann :/

Michael
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB + Access: Beziehungen setzen 
Autor: Darth
Datum: 09.11.04 15:16

Hat denn niemand mit so etwas bisher gearbeitet

Falls ich mich schlecht ausgedrückt habe oben, hier nochmal mein Anliegen:

Ich erstelle im Moment via Knopfdruck im VB6 eine neue Access-Datenbank und lege ebenso die Tabellen samt Feldern an und bestimme die Datentypen und die Primärschlüssel.

Da ich aber auch Fremdschlüssel verwende, und ich gerne die Beziehungen zwischen den Tabellen hätte um diese nutzen zu können, muss ich eben jene Beziehungen erst einmal setzen.
Das wären im Access direkt die Linien zwischen den Tabellen in der entsprechenden Ansicht.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB + Access: Beziehungen setzen 
Autor: TommyK
Datum: 09.11.04 16:15

Hallo Michael,

hab auf meiner HP nur ein Access-Bsp wie es mittels VBA geht.
Aber vielleicht ist es eine Anregung für Dich:
Info und Download: Anzeigen, Erstellen und Löschen von Tabellenrelationen in externen DB's
http://www.access-beispiele.tommyk-webbox.de/bsp_sys.php#sys_rel

Gru? TommyK

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB + Access: Beziehungen setzen 
Autor: Darth
Datum: 09.11.04 18:51

Danke TommyK,

zusammen aus einer Google-Seite und Deiner Datei konnte ich dann doch endlich noch die Beziehungen erstellen.

Jedoch wenn ich einen Errorhandler einbaue, und meine DB erfolgreich angelegt wird/wurde, bekomme ich einen Fehler 0.

Ich gehe mal davon aus das dies lediglich bedeutet das es keinen Fehler gibt/gab, denn der errorhandler prüft auf eine bestimmte Fehlernummer und ansonsten gibt Er eine Meldung aus die die Fehlernummer beinhaltet... was hier 0 ist.

Aber hier der Code mit dem ich meine Tabellen und die Indexes samt Beziehungen setze.
Private Sub dbcreat_Click()
 
Dim Db As Database
Dim dbFile As String
Dim tdfNew1 As TableDef
Dim tdfNew2 As TableDef
Dim tdfNew3 As TableDef
Dim idxNew As New Index
Dim relNew As Relation
 
On Error GoTo err_Handler
 
'Datenbank öffnen und Tabellen erstellen
dbFile = App.Path + "\db_musikcds.mdb"
Set Db = Workspaces(0).CreateDatabase(dbFile, dbLangGeneral)
 
Set tdfNew1 = Db.CreateTableDef("tbl_bands")
With tdfNew1
    .Fields.Append .CreateField("band_id", dbLong)
    .Fields(0).Attributes = dbAutoIncrField
    .Fields.Append .CreateField("band_name", dbText, 255)
    Set idxNew = .CreateIndex("band_PS")
    idxNew.Fields.Append idxNew.CreateField("band_id")
    idxNew.Primary = True
    .Indexes.Append idxNew
    Set idxNew = Nothing
    Set idxNew = .CreateIndex("band_NAME")
    idxNew.Fields.Append idxNew.CreateField("band_name")
    .Indexes.Append idxNew
    Set idxNew = Nothing
End With
Db.TableDefs.Append tdfNew1
 
Set tdfNew2 = Db.CreateTableDef("tbl_albums")
With tdfNew2
    .Fields.Append .CreateField("cd_id", dbLong)
    .Fields.Append .CreateField("band_id", dbLong)
    .Fields.Append .CreateField("num_tracks", dbByte)
    .Fields.Append .CreateField("album_title", dbText, 255)
    Set idxNew = .CreateIndex("cd_PS")
    idxNew.Fields.Append idxNew.CreateField("cd_id")
    idxNew.Primary = True
    .Indexes.Append idxNew
    Set idxNew = Nothing
    Set idxNew = .CreateIndex("band_FS")
    idxNew.Fields.Append idxNew.CreateField("band_id")
    idxNew.Primary = False
    .Indexes.Append idxNew
    Set idxNew = Nothing
End With
Db.TableDefs.Append tdfNew2
 
Set tdfNew3 = Db.CreateTableDef("tbl_tracks")
With tdfNew3
    .Fields.Append .CreateField("cd_id", dbLong)
    .Fields.Append .CreateField("track_nr", dbByte)
    .Fields.Append .CreateField("track_title", dbText, 255)
    .Fields(2).AllowZeroLength = True
    .Fields.Append .CreateField("lenght", dbLong)
    Set idxNew = .CreateIndex("cd_FS")
    idxNew.Fields.Append idxNew.CreateField("cd_id")
    idxNew.Primary = False
    .Indexes.Append idxNew
    Set idxNew = Nothing
End With
Db.TableDefs.Append tdfNew3
 
'Beziehung Band -> Album erstellen
Set relNew = Db.CreateRelation( _
    "band_ID", tdfNew1.Name, tdfNew2.Name, _
    dbRelationUpdateCascade + dbRelationDeleteCascade)
relNew.Fields.Append relNew.CreateField("band_id")
relNew.Fields!band_id.ForeignName = "band_id"
Db.Relations.Append relNew
Set relNew = Nothing
 
'Beziehung Album -> Tracks erstellen
Set relNew = Db.CreateRelation( _
    "cd_ID", tdfNew2.Name, tdfNew3.Name, _
    dbRelationUpdateCascade + dbRelationDeleteCascade)
relNew.Fields.Append relNew.CreateField("cd_id")
relNew.Fields!cd_id.ForeignName = "cd_id"
Db.Relations.Append relNew
Set relNew = Nothing
 
Db.Close
 
'Fehlermeldungen bei der Datenbankerstellung
 
err_Handler:
  Select Case Err.Number
    Case 3204
      MsgBox "Die Datenbank ist bereits vorhanden!", vbExclamation, "Fehler"
    Case 0
      MsgBox "Datenbank erfolgreich angelegt!", vbExclamation, "Erstellen" & _
        "erfolgreich"
    Case Else
      MsgBox "Es ist der Fehler:" & Str$(Err.Number) & vbCrLf & """" & _
        Err.Description & """ aufgetreten.", vbCritical, "Fehler"
  End Select
 
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB + Access: Beziehungen setzen 
Autor: spike24
Datum: 10.11.04 10:43

for der zeile
err_Handler
würde ich
MsgBox "Datenbank erfolgreich angelgt!"
Exit Sub
einbauen

wenn er einen fehler wirft geht er dort hin
wenn er keinen fehler wirft braucht er da nicht rein

anderer seits
brauchst du in der datenbank keine beziehungen, da Du die beziehungen in deinem programm hast (logik)
und mich haben die beziehungen in der datenbank immer gestört
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB + Access: Beziehungen setzen 
Autor: Darth
Datum: 11.11.04 21:07

Moin,

also nach Rücksprache mit meiner Dozentin brauche ich keine Beziehungen wenn ich VB + Access als Projekt abliegere....

Schmeiss ich die halt wieder raus *g*

Aber gut zu wissen wie es geht ist es alle male

Michael
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB + Access: Beziehungen setzen 
Autor: Sophus
Datum: 29.04.14 19:01

Dieses Thema interessiert mich auch sehr brennend. Ich bin dabei meine Datenbankstruktur grundlegend zu bearbeiten und umfangreicher zu gestalten. Dies führte dann dazu, dass ich dann recht viele Tabellen angelegt habe, um somit effizeinte Abfrage stellen zu können. Ist es wirklich unnötig Beziehungen mit VB zu erstellen? Ich handhabe es auch so, dass die Datenbank per VB6 erstellt wird. Wenn ich es also richtig verstanden habe, dienen Beziehungen in der Datenbank Access nur für jene die Formulare in Access erstellen bzw. mit VBA arbeiten? Für VB6 ist es eher unnötig? Warum? Ich dachte immer, dass allgemein Beziehungen die Abfragen erleichtern. Darüber hinaus, wenn ich einen Datensazu lösche, dass die dazugehörigen Fremdschlüssel automatisch mitgelöscht werden etc.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB + Access: Beziehungen setzen 
Autor: Franki
Datum: 29.04.14 23:59

Hallo,
huch, ein Thread der 10 Jahre alt ist wird wieder aktuell, aber warum nicht?

Also ich sage mal so, die Frage ob Beziehungen notwendig sind oder nicht ist nicht die wichtigste Frage. Viel wichtiger ist die Datenbankstruktur an sich, also welche Tabellen mit welchem Inhalt(Feldern) und noch wichtiger welche SQL Abfragen notwendig sind.

Gleiches gilt für die Normalisierung, die ist für sich gesehen auch gut und sinnvoll, aber manchmal auch bremsend bei der Ausführung von Code.

Für dein Projekt würde ich sagen, du kannst auf Beziehungen in der DB verzichten. Aber du kannst das ja ganz einfach selbst testen:

Erstelle dir eine kleine Testanwendung mit einer TestDB die du über eine Schleife mit sagen wir 100.000 Testdaten füllst. Dann testest du die Abfrage mit und ohne Beziehungen in der DB.

Auf heutigen Rechnern macht das keinen Unterschied mehr, anders würde das aussehen wenn du die DB auf auf einem Server hast und der User eine langsame Internetverbindung hat.

Gruß
Frank










Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB + Access: Beziehungen setzen 
Autor: Sophus
Datum: 30.04.14 17:56

Hallo Franki

Das dieser Beitrag tatsächlich 10 Jahre alt ist, habe ich gar nicht bemerkt. Die Sache ist einfach die, dass ich allein für Filme schon an die 30 tabellen besitze - eben weil ich so konkret und genauestens normalisiere und strukturiere. Und das "Thema" Filme ist immer noch nicht vom Tisch, da noch einige Tabellen hinzukommen. Und in Anbetracht dieser Tatsache fragte ich mich, wie ich dieses (für mich erscheindene) Monstrum im Code-Teil bewerkstellige. Das Erstellen der Datenbank und die Tabellen sowie Felder ist nicht das Problem, nur die Beziehungen machte mir etwas Sorgen. Mir ging es viel mehr um die m:n Beziehungen. Also war ich auf der Suche nach Beispielen, und landete hier #Aber wenn ich die Beziehungen fallen lassen kann, um so besser für mich

Beste Grüße
Sophus
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel