Access - Suchen über Kombinationsfeld geht nicht / bringt Laufzeitfehler

Matze7

Mitglied
Ich habe mit Access 2000 / 2002 ein Kombinationsfeld angelegt, mit welchem ich einen Datensatz im Formular suchen will.

Soweit klappt auch fast alles.

Sobald ich aber das Kombinationsfeld leer mache und Enter drücke kommt ein Laufzeitfehler "94" - Unzulässige Verwendung von Null. (weil wohl nix drinnen steht, also 0 ist?)

Der Code sieht wie folgt aus:

Private Sub Kombinationsfeld_AfterUpdate()
'Den mit dem Steuerelement übereinstimmenden Datensatz suchen.

Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[ID] = " & Str(Me![Kombinationsfeld])
Me.Bookmark = rs.Bookmark

End Sub

Den dick markierten Bereich zeigt er beim Debuggen farblich an.

Wie kann ich es jetzt machen, das selbst wenn im Feld nix drin steht und man Enter drückt, dass er keine Fehlermeldung bringt?
Kann mir jemand helfen oder nen Tip geben? Danke.
 
Null ist nicht 0. Wenn du einen leeren String Anstelle von Null haben willst, dann soltest du das wandeln

Visual Basic:
Dim kf AS String
kf = IIF(is_null(Me![Kombinationsfeld]), vbNullString, Me![Kombinationsfeld])
rs.FindFirst "[ID] = " & kf
 
Null ist nicht 0. Wenn du einen leeren String Anstelle von Null haben willst, dann soltest du das wandeln

Visual Basic:
Dim kf AS String
kf = IIF(is_null(Me![Kombinationsfeld]), vbNullString, Me![Kombinationsfeld])
rs.FindFirst "[ID] = " & kf

Erstmal Danke.
Das mit der Null war ja nicht meine Idee, das kommt nur jedes mal, wenn ich nix eintrage und Enter drücke.

Nicht das du mich falsch verstehst, die Sache geht ansich, ich will halt nur, das wenn doch mal nix im Feld steht und Enter gedrückt wird, diese Fehlermeldung (Laufzeitfehler) nicht mehr kommt, sondern gar nichts passiert.
Bewirkt das dein Vorschlag hier oben?
 
Nicht ganz. Für gar nix kannst du so testen

Visual Basic:
IF NOT is_null(is_null(Me![Kombinationsfeld]) THEN
    '//TODO: Ist nicht leer, mach also was
END IF
 
Geht es so nicht auch:

Code:
IF Trim(Me!Kombinationsfeld) = "" THEN
  Exit Sub
ELSEIF Trim(Me!Kombinationsfeld) = "" THEN
  rs.FindFirst "[ID] = " & Str(Me![Kombinationsfeld])
END IF

NACHTRAG:
Habe es gerade mal hier nachgestellt. Der Fehler wird nur dann ausgelöst, wenn die STR Umwandlung verwendet wird Vielleicht löst sich dein Problem ja auch wenn du das rausnimmst.
 
Zuletzt bearbeitet:
Geht es so nicht auch:

Code:
IF Trim(Me!Kombinationsfeld) = "" THEN
  Exit Sub
ELSEIF Trim(Me!Kombinationsfeld) = "" THEN
  rs.FindFirst "[ID] = " & Str(Me![Kombinationsfeld])
END IF

NACHTRAG:
Habe es gerade mal hier nachgestellt. Der Fehler wird nur dann ausgelöst, wenn die STR Umwandlung verwendet wird Vielleicht löst sich dein Problem ja auch wenn du das rausnimmst.

Hmmm, scheint soweit zu gehen, nur das dann aber die Sprungmarke nicht mehr geht, sprich es kommt zwar keine Fehlermeldung mehr, aber das ausgesuchte Feld wird nicht in der Anzeige darüber angezeigt.
Bringt ja nix, wenn ich da was auswähle, es aber in der entsprechenden Anzeige darüber für die einzelnen Felder nicht auch angezeigt wird, wie dies beim Original über den Assistenten ist.
 

Neue Beiträge

Zurück