Hallo da darußen.
Ich bin ein Neuer hier und habe ein Problem mit VBA in Access 2007.
Ich habe eine Function, in der ich Werte suche und dann damit rechne.
Function getGefKm(lngTID As Long, lngStartKm As Long, lngGesKm As Long) As Long
Dim db As DAO.Database
Set db = DBEngine.Workspaces(0).Databases(0)
Dim rcs As DAO.Recordset
Set rcs = CurrentDb.OpenRecordset("SELECT Max(GESKM)as gefkm from Tankdaten where tdatum hier setzt der Debugger auf!! If rcs.Fields(„gefkm“).Value Is Null Then
getGefKm = lngGesKm - lngStartKm
Exit Function
Else
getGefKm = lngGesKm - rcs.Fields(„gefkm“).Value
End If
rcs.Close
Set rcs = Nothing
End Function
Ich möchte Bitte alle bitten, die mir hier helfen. Ich suche keine neue Lösung, die Logik steht! Es handelt sich hier um die Migration von einer Oracle DB zu Access. Die Daten sind auch schon in Access. Nur die Sytnax ist total anders.
Ich habe die Zeile im Code markiert. Laufzeitfehler 424. Ich weiss nicht warum!!?? das betreffende .Value ist NULL und das frage ich ja auch ab??
Function getGefKm(lngTID As Long, lngStartKm As Long, lngGesKm As Long) As Long
Dim db As DAO.Database
Set db = DBEngine.Workspaces(0).Databases(0)
Dim rcs As DAO.Recordset
'db auch verwenden, wenn es schon initialisiert wird und Leerzeichen vor „as“
Set rcs = db.OpenRecordset("SELECT Max(GESKM) as gefkm from Tankdaten where tdatum dbOpenSnapshot)
'dbOpenSnapshot weil eh nichts am Recordset aktualisiert wird
If IsNull(rcs.Fields(„gefkm“)) Then ’ mit IsNull-Funktion prüfen… xxx Is Null gibt es nicht in VBA, nur in SQl
getGefKm = lngGesKm - lngStartKm ’'Exit Function 'überflüssig, wenn nicht gar logisch falsch
Else
getGefKm = lngGesKm - rcs.Fields(„gefkm“) '.Value ist überflüssig
End If
rcs.Close
Set rcs = Nothing set db=Nothing ’ db auch zerstören
End Function