Hallo,
mit unten stehendem Code habe ich ein Problem.
Das Programm soll Daten aus einer Textdatei in eine MDB eintragen. Die Textdatei wird geändert, erweitert. Neue Daten sollen eingetragen werden, dabei habe ich Probleme mit den Daten, die schon eingetragen sind.
Die Funktion ‚Suche‘ soll feststellen, ob ein Datensatz in der Datenbank bereits vorhanden ist und wenn der Datensatz noch nicht existiert, soll er eingetragen werden.
Manchmal verläuft die Suche negativ, der Datensatz wird nach meinem Verständnis also nicht gefunden. Wenn er angelegt werden soll kommt dann eine Fehlermeldung, daß eine Schlüsselverletzung vorliegt, der Datensatz kann nicht angelegt werden. Der Fehler ist nicht abfangbar, das Programm steigt aus.
Kann Jemand meinen Fehler sehen? Was ich nicht verstehe: Das Programm läuft auch mal mehrere Tage ohne Fehler durch, bis es hängen bleibt.
Oder habe ich etwas übersehen und es gibt einen einfacheren Weg? Das Ziel ist, daß ein mal täglich der Inhalt der MDB an den Inhalt der Textdatei angepasst wird. Es kommen etwa 20 bis 30 Datensätze neu dazu.
Gruß, Rainer
If suche(EDVNr, cha) = False Then
RS.AddNew
RS("EDVnummer") = EDVNr
RS("Chargennummer") = cha
RS("Lieferantenkurznummer") = lknr
RS.Update
End If
Private Function suche(ByVal EDVNr As String, ByVal cha As String) As Boolean
Dim DB As String
DB = "c:\Datenbank.mdb"
strSQL = "SELECT \* " & \_
"FROM Chargen " & \_
"WHERE (EDVNummer = '" & EDVNr & "') And (Chargennummer = '" & cha & "');"
Set objConnection = New ADODB.Connection
With objConnection
.CursorLocation = adUseClient
.Mode = adModeShareDenyNone
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = DB
.Open
End With
Set objRS = New ADODB.Recordset
With objRS
Set .ActiveConnection = objConnection
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Source = strSQL
Call .Open
End With
If objRS.RecordCount = 0 Then
suche = False
Else
suche = True
End If
objRS.Close
End Function