Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Recordset

Forumthread: Recordset

Recordset
Peter
Hallo,
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
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Recordset
20.07.2009 09:22:00
Luschi
Hallo Peter,
ich habe am Wochenende mal ein bischen zu diesem Thema gegoogelt und mußte feststellen, daß das Internet voll ist mit genau diesem Thema: "ADODB kann FoxPro-Dateien nicht aktualisieren".
Doch eine vernünftige Antwort darauf konnte ich nirgends finden. Das Merkwürdige daran ist ja, das die Veränderungsbefehle 'RS.Fields("name") = "...." usw. alle akzeptiert werden, doch der eigentliche Aktualisierungsbefehl "RS.Update" dann patzt und der Fehler auftritt. Es ist schon merkwürdig. Werde heute mal nach einer Lösung mit DAO im I-Net suchen, da auch ich eine Lösung dazu dringend brauche.
So bald es Neuigkeiten gibt, melde ich mich noch mal.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Recordset
20.07.2009 10:35:35
Peter
Hallo Luschi,
Danke, dass Du Dich der Sache angenommen hast. Vielleicht kann man das Problem ja auch dadurch lösen, dass man die Werte im Datagrid nach dem Set Datagrid1-Befehl ändert, also den RS so lässt wie er ist. Wie das geht, dazu fehlen mir aber auch die Kenntnisse.
Grüße
Peter
Anzeige
AW: Recordset
20.07.2009 20:07:18
Peter
Hallo Luschi,
im ActiveVB-VB5-VB6-Forum habe ich einen Hinweis gefunden, wie ich das Problem lösen kann: ich speichere den RS und rufe ihn neu auf. Damit funktioniert es.
Vielen Dank für Dein Mitsuchen
Grüße
Peter
'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
If RS.RecordCount = 0 Then GoTo ende
RS.MoveFirst
'ggf. vorhandene Datenbank löschen
On Error Resume Next
Kill "C:\tmp\Auswahl.dat"
'RS speichern
RS.Save "C:\tmp\Auswahl.dat"
RS.Close
RS.ActiveConnection = Nothing
'Gespeicherte Daten neu aufrufen
RS.Open "C:\tmp\Auswahl.dat"
'Umlaute und Sonderzeichen umkodieren
Do Until RS.EOF = True
For i = 0 To RS.Fields.Count - 1
RS.Fields(i) = OemToCharAStr(RS.Fields(i))
Next i
RS.MoveNext
Loop
'DataGrid füllen
Set DataGrid1.DataSource = RS
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige