VB 5/6-Tipp 0550: Beispiel flexible Tabellen-Verknüpfung
von Ingo Moch
Beschreibung
Dieses Beipiel zeigt den Inhalt einer nicht persistent verknüpften Tabelle in einer Tabelle an.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: keine | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '---------- Anfang Projektdatei ViewLinkTable.vbp ---------- ' Es muss ein Verweis auf 'Microsoft ActiveX Data Objects 2.7 Library' gesetzt werden. '--- Anfang Formular "frmViewLinkTable" alias ViewLinkTable.frm --- ' Steuerelement: Schaltfläche "cmdRsMove" (Index von 0 bis 3) ' Steuerelement: Textfeld "txtField" (Index von 0 bis 0) ' Steuerelement: Beschriftungsfeld "lblField" (Index von 0 bis 0) ' ======================================= ' Beispiel flexible Tabellen-Verknuepfung ' ======================================= ' ' zeigt den Inhalt einer nicht persistent ' verknuepften Tabelle in einer Tabelle ' an. ' ' verwendetet (Fremd-)Objekte: ' ' ADODB: ADO ' ======================================= Option Explicit Private mCon As ADODB.Connection Private mRs As ADODB.Recordset ' ----------------- ' Form wird geladen ' ----------------- Private Sub Form_Load() Set mCon = New ADODB.Connection ' --- mit Datenbank verbinden --- With mCon ' --- Zugriffsoptionen setzen --- .CursorLocation = adUseClient .Mode = adModeReadWrite Or adModeShareDenyWrite ' --- Datenbanktyp und -namen festlegen --- .Provider = "Microsoft.Jet.OLEDB.3.51" .ConnectionString = "Data Source=C:\test.mdb" ' --- verbinden --- .Open End With ' --- verknuepfte Tabelle im --- ' --- Tabellensteuerelement anzeigen --- Set mRs = LinkTableNonPersistent( _ "Test", _ "C:\test.mdb", mCon) ArrangeControls mRs ShowData mRs End Sub ' ------------------ ' Form wird entladen ' ------------------ Private Sub Form_Unload(Cancel As Integer) ' --- Datenbankverbindung loesen --- ' --- und Objekt vernichten --- mRs.Close mCon.Close Set mRs = Nothing Set mCon = Nothing End Sub ' -------------------------------- ' Datensatzschaltflaeche betaetigt ' -------------------------------- Private Sub cmdRsMove_Click(Index As Integer) Select Case Index Case 0 mRs.MoveFirst Case 1 mRs.MovePrevious Case 2 mRs.MoveNext Case 3 mRs.MoveLast End Select ShowData mRs End Sub ' --------------------------------------------------- ' Oeffnet eine Tabelle aus einer "fremden" Datenbank ' ' Parameter: ' ' rsForeignTableName: Tabellenname in der Datenbank ' rsForeignConnect: Verbindungszeichenfolge ' rcon: Connection-Objekt ' ' Rueckgabe: ' ' Recordset-Objekt, welches die zu persistent ' --------------------------------------------------- Public Function LinkTableNonPersistent( _ ByRef rsForeignTableName As String, _ ByRef rsForeignConnect As String, _ ByRef rcon As ADODB.Connection) As ADODB.Recordset Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset ' --- Recordset oeffnen --- With rs .CursorType = adOpenDynamic .LockType = adLockOptimistic ' --- SQL-Statement zusammenbasteln --- .Open "SELECT * FROM [" & rsForeignTableName & _ "] IN '" & rsForeignConnect & "'", rcon End With ' --- Rueckgabewert zuweisen --- Set LinkTableNonPersistent = rs Set rs = Nothing End Function Private Sub ArrangeControls(ByRef rrs As ADODB.Recordset) Dim i As Long For i = 0 To (rrs.Fields.Count - 1) If (i > 0) Then Load lblField(i) Load txtField(i) With lblField(i - 1) lblField(i).Move .Left, (.Top + .Height + 100) End With With txtField(i - 1) txtField(i).Move .Left, (.Top + .Height + 100) End With End If lblField(i).Caption = rrs.Fields(i).Name lblField(i).Visible = True txtField(i).Visible = True Next ' i End Sub ' ---------------------------- ' aktuellen Datensatz anzeigen ' ---------------------------- Private Sub ShowData(ByRef rrs As ADODB.Recordset) Dim i As Long On Error Resume Next ' --- Feldinhalte anzeigen --- For i = 0 To (mRs.Fields.Count - 1) txtField(i).Text = mRs(i).Value Next ' i ' --- Datensatzschaltflaechen --- ' --- aktivieren/deaktivieren --- cmdRsMove(0).Enabled = (Not mRs.BOF) cmdRsMove(1).Enabled = (Not mRs.BOF) cmdRsMove(2).Enabled = (Not mRs.EOF) cmdRsMove(3).Enabled = (Not mRs.EOF) End Sub '--- Ende Formular "frmViewLinkTable" alias ViewLinkTable.frm --- '----------- Ende Projektdatei ViewLinkTable.vbp -----------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 1 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Uwe am 18.11.2002 um 15:02
Für dieses Beispiel wird die Microsoft ActiveX Data Objects 2.7 Library benötigt (meines Wissens nach erst ab XP mitgeliefert, erhältliche Upgrades können ältere Datenbankanwendungen - insbes. Access-Verknüpfungen - zerstören, da die Jet-Engine von 2.7 nicht mehr unterstütz wird - glaube ich...)
Da ich gerade an dieser 2.7 Version verzweifle: Wer weiß Genaueres?