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
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?