Forums Neueste Beiträge
 

[VB6] Zugriff auf ein ADODB Datenbankfeld (Spalte) mit einem numerischen Namen

15/07/2010 - 12:39 von Susann Markward | Report spam
xPost -> microsoft.public.de.vb.datenbank; de.comp.lang.misc
fUp2 -> de.comp.lang.misc

Hallo,

ich greife folgendermaßen erfolgreich auf eine Access-DB zu:
Set cnn = New ADODB.Connection
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0" & _
";Persist Security Info=False" & _
";Jet OLEDB:Database Password=" & _
Password & _
";Data Source=" & Dateiname
Set rst = New ADODB.Recordset

rst.Open "Messwerte", cnn, , , adCmdTable
rst.AddNew
rst!ID = ID
For i = 1 To 100
rst.Fields(i) = MyArray(i)
Next i

...

Fragen:
1) Ist es richtig, dass man mit rst.Fields(i) nicht direkt auf den
Spaltennamen zugreift, sondern auf eine Art übergeordneten Index, der
die Reihenfolge der Spalten abbildet unabhàngig von deren Namen?
2) Wie kann ich auf ein Feld mit einem numerischen Namen Zugriff
bekommen? rst!(i) = MyArray(i) funktioniert ja nicht.

Derzeit mache ich es derart:
For i = 1 To 100
For k = 1 To rst.Fields.Count
If rst.Fields(k).Name = CStr(i) Then
rst.Fields(k) = MyArray(i)
Exit For
End If
Next k
Next i

Nur ist hier ja der Aufwand (N) ziemlich hoch. Schöner wàre es, wenn ich
analog zu "rst!ID = ID" die Spalte mit dem numerischen Namen
gleichermaßen direkt ansprechen könnte.

Geht das?

Mit freundlichen Grüßen
Susann
 

Lesen sie die antworten

#1 Dieter Strassner
15/07/2010 - 13:07 | Warnen spam
Hallo Susann,

ich greife folgendermaßen erfolgreich auf eine Access-DB zu:
Set cnn = New ADODB.Connection
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0" & _
";Persist Security Info=False" & _
";Jet OLEDB:Database Password=" & _
Password & _
";Data Source=" & Dateiname
Set rst = New ADODB.Recordset

rst.Open "Messwerte", cnn, , , adCmdTable
rst.AddNew
rst!ID = ID
For i = 1 To 100
rst.Fields(i) = MyArray(i)
Next i

...

Fragen:
1) Ist es richtig, dass man mit rst.Fields(i) nicht direkt auf den
Spaltennamen zugreift, sondern auf eine Art übergeordneten Index, der
die Reihenfolge der Spalten abbildet unabhàngig von deren Namen?



Im Prizip ja, aber statt "übergeordnet" würde ich eher formulieren "in
Reihenfolge der definition aus Datenbank".
(zumindest meine Beobachung in verbindung mit ADO + MS-SQL-SERVER).


2) Wie kann ich auf ein Feld mit einem numerischen Namen Zugriff
bekommen? rst!(i) = MyArray(i) funktioniert ja nicht.

Derzeit mache ich es derart:
For i = 1 To 100
For k = 1 To rst.Fields.Count
If rst.Fields(k).Name = CStr(i) Then
rst.Fields(k) = MyArray(i)
Exit For
End If
Next k
Next i

Nur ist hier ja der Aufwand (N) ziemlich hoch. Schöner wàre es, wenn
ich analog zu "rst!ID = ID" die Spalte mit dem numerischen Namen
gleichermaßen direkt ansprechen könnte.

Geht das?



M.W. geht das nicht direkt. Aber warum speichert Du aus o.g. Schleife (bei
einmaligen Durchlauf durch alle Felder) nicht die Zuordnung "Feldname zu
Index" in einer kleinen Tabelle?
Dann nur nur noch über die Tabelle auf das Feld zugreifen (
rst.Fields(tabelle(i)).Value


Viele Grüße

Dieter


Rückfragen bitte nur in die Newsgroup!

EDV-Kommunikation Strassner e.K.
68623 Lampertheim
Internet: www.strassner.biz

Ähnliche fragen