|
Beim Versuch ein Recordset einer dBase III-Datenbank mit .Update zu aktualisieren tritt immer der Runtime Error 8004e38 auf.
Ursache:
Neben Problemen mit falschen CursorType- und CursorLocation-Einstellungen kann es einfach auch an einer defekten Index-Datei liegen.
Zum Test die Indexdatei neu aufbauen lassen bzw. die dazugehörige .INF-Datei umbenennen.
…
Dim dbDBIII$
Dim dbTest as ADODB.Connection
Dim rstTest as ADODB.Recordset
Set dbTest = New ADODB.Connection
Set rstTest = New ADODB.Recordset
dbDBIII$=”C:\test”
dbTest.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & dbDBIII$ & ";" & _
"Extended Properties=DBASE III;"
InitRecordset rstTest, dbTest, “Adressen”
rstTest.Find “Name=’Alter Name’”
rstTest!Name = “Neuer Name”
rstTest.Update <--- Laufzeit-Fehler tritt hier auf
…
Public Sub InitRecordset(ByRef rst As ADODB.Recordset, _
ByRef db As ADODB.Connection, _
Table$)
Dim ez%
If Not rst Is Nothing Then
On Error Resume Next
rst.Close
Set rst = Nothing
Set rst = New ADODB.Recordset
On Error GoTo 0
End If
rst.CursorType = adOpenDynamic
rst.CursorLocation = adUseClient
On Error GoTo fehler
neuversuch:
DoEvents
rst.Open "select * from " & Table$, db, _
adOpenDynamic, adLockOptimistic
Exit Sub
fehler:
If ez% < 3 Then
ez% = ez% + 1
Resume neuversuch
Else
MsgBox "Fehler beim Öffnen eines Recordsets _
aufgetreten." & vbCrLf & Err.Description & _
vbCrLf & "Später bitte nochmal versuchen.", , _
vbOKOnly, "Fehler"
Exit Sub
End If
End Sub
|