Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

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

8 views
Skip to first unread message

Susann Markward

unread,
Jul 15, 2010, 6:39:54 AM7/15/10
to
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

Susann Markward

unread,
Jul 15, 2010, 7:57:43 AM7/15/10
to
xPost -> microsoft.public.de.vb.datenbank; de.comp.lang.misc
fUp2 -> de.comp.lang.misc

Hallo,

*Stefan Dase* schrieb am 15.07.2010 13:25:
> Wandel einfach den Index in eine Zeichenkette um, dann funktioniert das
> genauso:
>
> rst.Fields(CStr(i)).Value = MyArray(i)
>
> oder kürzer auch:
>
> rst(CStr(i)) = MyArray(i)

Danke! Manchmal sieht man den Wald vor lauter Bäumen nicht.

Sogar rst.Fields(CStr(i)) = MyArray(i) funktioniert.

Was ist denn der Unterschied aller drei Schreibweisen?

rst(CStr(i)) = MyArray(i)
rst.Fields(CStr(i)) = MyArray(i)
rst.Fields(CStr(i)).Value = MyArray(i)

Oder gibt es da gar keinen?

0 new messages