Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1088to1092
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige