Ich bin mir nicht sicher, ob ich Dein Problem richtig verstanden habe. Es scheint mir, Du möchtest wissen, wie Du an einzelne Feldinhalte einer Datnbanktabelle ran kommst. Das könntest Du mit ADO bspw. so erledigen:'Deklarationen
Dim meineVerbindung As ADODB.Connection
Dim MeinRecordset As ADODB.Recordset
Dim meinSqlStatement As String
'Verbindung zur Datenbank herstellen
Set meineVerbindung = New ADODB.Connection
With meineVerbindung
If .State = adStateOpen Then .Close
.Provider = "Microsoft.Jet.OLEDB.4.0" 'Access 2000/XP
.Properties("Data Source") = meinPfad & "meineAccessDB.mdb"
.CursorLocation = adUseClient
.Open
End With
'SQL-Statement erstellen;
'das Recordset soll alle benötigten Felder enthalten
meinSqlStatement = "SELECT Feld1, Feld2, Feld3 FROM meineTabelle"
'Recordset erstellen und öffnen
Set meinRecordset = New ADODB.Recordset
With meinRecordset
If .State = adStateOpen Then .Close
.ActiveConnection = meineVerbindung
.LockType = adLockOptimistic
.Source = meinSqlStatement
.Open
End With Jetzt hast Du alle benötigten Feldinhalte in einem Recordset. Für den Zugriff auf die Felder gibt es mehrere Möglichkeiten.
Zuerst die Syntax für den Zugriff auf ein Feld des Recordsets über den Feldnamen:meineVariable = meinRecordset.Fields("Feld1").Value Und jetzt die Syntax für den Zugriff auf den Feldinhalt über einen Index:meineVariable = meinRecordset.Fields.Item(meinIndex).Value Im zweiten Fall beginnt der Index bei "0" und bezeichnet die Position des Feldes innerhalb des mit obigen SQL-Statements erstellten Recordsets. In unserem Beispiel hat also Feld1 den Index "0", Feld2 den Index "1", etc. Damit kannst Du die Feldwerte über eine Zählschleife satzweise bequem auslesen und zuweisen.
Wenn Du das Recordset nicht mehr benötigst, schließt Du es mit:meinRecordset.Close Danach räumst Du noch auf, d. h. das nicht mehr benötigte Recordset-Objekt zerstören und aus dem Hauptspeicher löschen:Set meinRecordset = Nothing Das gleiche gilt auch für Deine Verbindung. Die Brauchst Du aber erst dann zu schließen und zu killen, wenn Du keinen Zugriff auf dei Datenbank mehr benötigst. Ich mache es gerne so, dass ich bei der Initialisierung meines Programms die Verbindung herstelle und diese erst bei Programmende wieder schließe.
Über SQL kannst Du auch die Felder aus mehreren Tabellen in einem Recordset zusammenfassen. Für eine Einführung in SQL schau mal hier SQL-Tutorial.
Gruß,
Michael
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. (Brian W. Kernighan) |