VBA Function Laufzeitfehler 424

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

Danke schon mal vorab.
mfg
Andreas

Hallo,

wie heißt die Meldung zu LZF 424?

und schreib insgesamt so:

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

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Franz,

die Meldung komplett ist:
Laufzeitfehler ‚424‘:
Objekt erforderlich

Danke schon mal.

mfg
Andreas

Hallo,
ok, arbeitet der Code jetzt nach der Anpassung?

evtl. muß zusätzlich noch geprüft werden, ob überhaupt ein DS geliefert wird:

.
.
.
If rcs.Recordcount > 0 then
.
.
Else
'setzen der Variablen auf Defaultwerte
End if
.
.
.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Franz,

hurra, hurra!!

Es funzt!! Toll, das mit der Syntax hab’ ich nirgends gefunden. Wenn es kein Is Null gibt, dann ist es ja klar!!

Danke
mfg
Andreas