Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
932to936
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
932to936
932to936
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

update Fox-Pro Datenbank

update Fox-Pro Datenbank
14.12.2007 12:37:00
Welbers
Hallo,
Aus verschiedenen Angaben im Archiv habe ich mir folgendes Makro zusammengebastelt.
DAs Makro läuft durch bis zum Punkt rs.update
Dann tritt der folgender Fehler auf
Laufzeitfehler '-2147467259(80004005)';
Fehler bei einer abfragebasierten Aktualisierung, da die zu aktualisierende Zeile nicht gefunden werden konnte.
Kann mir jemand sagen, was ich falsch gemacht habe. (Bitte mit richtigem Code, da ich von ADODB.Connection keine Ahnung habe.)
Vielen Dank schon mal an denjenigen, der mir helfen will.
Peter Welbers
Dim treiber As String, sqlString As String
'Definition des Recordset
Dim Con As ADODB.Connection
Dim RS As ADODB.Recordset

Public Sub umsp()
treiber = "Visual FoxPro Database"
'Datenbank Öffnen
Set Con = New ADODB.Connection
With Con
.Provider = "MSDASQL; DSN=" & treiber & ";"
.Open
End With
'Auszuwählende Datenbank
sqlString = "select * from V2AD1001"
Set RS = New ADODB.Recordset
RS.Open sqlString, Con, adOpenKeyset, adLockOptimistic
RS.MoveFirst
'For i = 2 To ActiveSheet.UsedRange.Rows.Count
For i = 2 To 10
If RS.Fields("SYS_ANLAGE").Value  "01.12.2007" Then RS.Fields("SYS_ANLAGE").Value = Date
Debug.Print RS.Fields("Nummer"), RS.Fields("SYS_ANLAGE")
RS.Update
RS.MoveNext
If RS.EOF Then Exit For
Next i
RS.Close
Set RS = Nothing
Con.Close
Set Con = Nothing
End Sub


1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: update Fox-Pro Datenbank
16.12.2007 15:24:00
Luschi
Hallo Peter,
ich schaue mir diesen Thread nun schon 'ne ganze Weile an, aber so richtig schlau werde ich daraus nicht.
Die For-Schleife in Excel hat mit dem Datensatzzeiger der FoxPro-Datenbannk nichts zu tun.
Der eigenliche Fehler ist aber der Folgende:
If RS.Fields("SYS_ANLAGE").Value "01.12.2007" Then RS.Fields("SYS_ANLAGE").Value = Date
Debug.Print RS.Fields("Nummer"), RS.Fields("SYS_ANLAGE")
RS.Update

Eigentlich muß die If-Bedingung so funktionieren:
If RS.Fields("SYS_ANLAGE").Value  "01.12.2007" Then
RS.Fields("SYS_ANLAGE").Value = Date
Debug.Print RS.Fields("Nummer"), RS.Fields("SYS_ANLAGE")
RS.Update
End IF

Nur wenn etwas geänder wurde, kann/darf RS.Update ausgeführt werden.
Doch die If-Bedingung müßte eigentlich so lauten gemäß den ADODB-Bestimmungen für Datumsfelder:
If RS.Fields("SYS_ANLAGE").Value "#2007-12-01#" Then
Da ich mit ADODB noch nie auf FoxPro-DB zugegriffen habe, bin ich mir da nicht so ganz sicher. Beim googeln ist mit auch diese Syntax über den Weg gelaufen:
If RS.Fields("SYS_ANLAGE").Value "^2007-12-01" Then
Wenn Du Werte aus der Excel-Tabelle nach Foxpro schreiben willst, dann stimmt die For-Schleife aber nicht.
Gruß von Luschi
aus klein-Paris

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige