Recordset
Peter
wer kann mir beim Recordset auf die Sprünge helfen?.
Ich sortiere aus eine Datenbank mit sql-String Adressen. Das funktioniert auch ganz gut. Die Daten lasse ich mir dann in einem DataGrid anzeigen.
Dazu benutze ich folgenden Code:
Treiber = "FoxPro-TreiberAbfrage"
TreiberDescription = Treiber & " für Suche"
SQLConnect = Pfad
CDSN = CreateDSN("Microsoft Visual FoxPro Driver", TreiberDescription, Treiber, SQLConnect & Chr(0) & "UID=")
sqlstring = "SELECT " & ..
'Datenbank Öffnen
Set Con = New ADODB.Connection
With Con
.Provider = "MSDASQL; DSN=" & Treiber & ";"
.Open
End With
Set RS = New ADODB.Recordset
RS.Open sqlstring, Con, adOpenKeyset, adLockOptimistic
RS.MoveFirst
Do Until RS.EOF = True
RS.Fields("name") = OemToCharAStr(RS.Fields("name"))
RS.Fields("strasse") = OemToCharAStr(RS.Fields("strasse"))
RS.Fields("ort") = OemToCharAStr(RS.Fields("ort"))
RS.MoveNext ' hier gibt es den Fehler
Loop
Set DataGrid1.DataSource = RS
Bevor ich die Daten an das Datagrid übergebe, möchte ich die Sonderzeichen und Umlaute mit der Funktion OemToCharAStr umcodieren.
Ohne die Anweisung (s. Code)
Do Until RS.EOF = True
..
RS.MoveNext
Loop
werden im Datagrid nur Felder der ersten Zeile mit der richtigen Umlaut-Codierung angezeigt. Ich hatte gedacht, mit der Do-Loop-Anweisung könnte ich alle Felder umkodieren.
Bei der Anweisung RS.MoveNext erhalte ich jedoch die Fehlermeldung
Laufzeitfehler '-2147418113(8000ffff) ':
Die Abfrage kann nicht aktualisiert werden, da die FROM-Klausel kein einzelner, einfacher Tabellenname ist
Kann mir jemand helfen und einen Tipp geben, was ich falsch mache?
Grüße
Peter