| |
VB & DatenbankenBeziehung (ADO) erstellen | | | Autor: NoProfi | Datum: 01.10.06 14:30 |
| Hallo Experten für Datenbanken...
Ich habe folgendes Problem.
Ich habe ein kleines Verwaltungsprogramm geschrieben mit einer Anbindung an eine Access-Datenbank das bisher super funzt.
Um die Daten zu verwalten nutze ich ADO 2.8, DAO 3.6 und ADOX 2.8, die Datenbank ist Access 2000.
Nun zu meinen Problem:
Ich möchte, da dieses Programm auch in Australien mehreremal eingesetzt wird, die Datenbank um mehrere Tabellen erweitern
und eine Beziehung zur Haupttabelle per VB6 erstellen. Das mit den Fields einfügen in der Haupttabelle und das erstellen
der neuen Tabelle klappt vorzüglich NUR die Beziehung 1:N von der neuen Tabelle zur Haupttabelle erstellen will einfach
nicht klappen.
Wie kann ich ich denn in der Haupttabelle ein Indiez (Duplikate möglich) und in den neuen Tabellen ein Indiez (Ohne Duplikate)
unter VB6 anlegen ??? In Access ist mir das klar, nur ich möchte nicht deswegen nach Australien fliegen um dort die
Datenbanken zu erweitern. Auch kann ich nicht die Anwender dazu beauftragen die Datenbank persöhnlich zu erweitern
da viele Newbies darunter sind und die Datenbanken schon eine beachtliche Anzahl an Einträgen haben wodurch eine
neue Datenbank mit den neuen Tabellen auch nicht in Frage kommt.
So sollte die Beziehung aussehen:
Hier einige Auszüge aus dem Code:
Hinweis: Das "Jet OLEDB: Database" im Code ist natürlich OHNE Space !! sonst bekomme ich
Option Explicit
' Alle öffentlichen Variablen
Public oConn As ADODB.Connection
Public DB_Path As String
Public DB_Name As String
Public DB_PW As String
Public RetVal As String
Public DB_Open As Boolean
' Bestehende Datenbank öffnen
Public Sub DB_Oeffnen()
Dim sConn As String
Set oConn = New ADODB.Connection
With oConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source") = DB_Name
.Properties("Persist Security Info") = False
' Falls die Datenbank durch ein Passwort geschützt ist...
.Properties("Jet OLEDB: Database Password") = DB_PW
End With
' Falls die Datenbank durch ein Passwort geschützt ist...
sConn = sConn & "Jet OLEDB: Database Password=" & DB_PW & ";"
oConn.Open sConn
DB_Open = True
End Sub
' Neues Field in Haupttabelle einfügen
Public Sub TabellenField_zufügen(sTable As String, _
sFieldName As String, sSize As Integer)
If DB_Open Then
If Not dbFieldExists(sTable, sFieldName, oConn) Then
oConn.Close
FieldErzeugen sTable, sFieldName, sSize
Else
Exit Sub
End If
Else
DB_Oeffnen
If Not dbFieldExists(sTable, sFieldName, oConn) Then
oConn.Close
FieldErzeugen sTable, sFieldName, sSize
End If
End If
End Sub
' Tabellenfeld nachträglich hinzufügen
Private Sub FieldErzeugen(sTable As String, sField As String, _
sSize As Integer)
Dim Db As Database
Dim Feld As New DAO.Field
' Datenbank exklusiv öffnen
Set Db = DBEngine.OpenDatabase(DB_Name, True, False, _
";pwd=" & DB_PW)
' DatenField in Haupttabelle einfügen
With Db.TableDefs(sTable).Fields
' Feld "Ausgeliehen und Bestellt" definieren
Feld.Name = sField
Feld.Type = dbText
Feld.Size = sSize
Feld.AllowZeroLength = True
' Jetzt sollte der Indiez (Mit Duplicate) gesetzt werden
' und dafür habe ich keine Vorstellung wie das geht !!!!!!
' Feld hinzufügen
.Append Feld
Set Feld = Nothing
End With
' Datenbank schliessen und zerstören
Db.Close
Set Db = Nothing
' Datenbank zur Bearbeitung wieder öffnen
DB_Oeffnen
End Sub Bis hierher klappt alles vom feinsten, nur mit der Erstellung einer Beziehung will es einfach nicht klappen.
Ich hoffe das ich mich so ausgedrückt habe das Ihr es versteht was mein Belangen ist und einer von Euch mir einen
Hinweis, oder vieleicht ein kleines Beispiel geben kann.
Mit den allesbesten Grüßen
Jürgen | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere Infos
|
|
|
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
|
|