Hallo tester,
Ebenfalls Hallo!
ich verwende jetzt folgenden Code:
…
Leider wird nun bei klick zunächst „datensatz nicht gefunden“
angegeben und dann der plz wert des aktuellen datensatzes
gelöscht. wenn man dann nochmal auf den button klickt, wird
zwar der richtige datensatz angezeigt, aber wieder dessen plz
gelöscht…
Auch wenn Du Dein Problem schon anderweitig gelöst hast, werde ich die Sache doch noch berichtigen. Für den Fall, dass Du dies noch mal benötigst oder jemand anderes ein ähnlich gelagertes Problem hat und hier liest.
Bin leider selber etwas mit den Feldbezeichnungen durcheinandergekommen, daher das ungewöhnliche Ergebnis.
Gundidee des Codes ist es, in ein ungebundenes Feld im Formular einen Suchwert einzutragen, nach Druck auf eine Schaltfläche den Wert in der Datenquelle des Formulars zu suchen und den gefundenen Datensatz im Formular als aktuell zu setzen.
Das Feld „PLZ“ im Formular gibt natürliche den Inhalt Deiner Datenquelle wieder und darf nicht durch den Code über Me!PLZ="" geändert werden. Auch als Suchbegriff im Code über a.FindFirst … & Me!PLZ … kann dies keine Verwendung finden, da dann der aktuelle Datensatz gesucht wird, was ja Quatsch ist.
Vor Ausführung des Codes muss im Formular ein ungebundenes Textfeld eingefügt werden (Name z.B. „PLZSuch“) und für die Suche darauf zurückgegriffen werden:
Private Sub Befehl44_Click()
Dim a As DAO.Recordset
Set a = Me.RecordsetClone
a.FindFirst „[PLZ] = '3116“ & Me!PLZ Such.Value & „’“
If Not a.NoMatch Then
Me.Bookmark = a.Bookmark
Else
MsgBox „Datensatz nicht gefunden!“
End If
Me!PLZ Such.Value = „“
a.Close
End Sub
Außerdem muss es sich bei dem Feld „PLZ“ immer um einen eindeutigen Wert handeln, der in der Datenquelle nur einmal auftaucht, sonst findet man immer nur den ersten Datensatz mit Übereinstimmung.
Alternativ zu dem Suchbegriff über die Eingabe in einem Textfeld im Formular kann man den Suchwert auch direkt im Code abfragen:
Private Sub Befehl44_Click()
Dim a As DAO.Recordset
Dim PLZSuch as String
Set a = Me.RecordsetClone
PLZSuch = Inputbox(„Bitte Suchwert eingeben“)
If PLZSuch = „“ Then Exit Sub
a.FindFirst „[PLZ] = '3116“ & PLZSuch & „’“
If Not a.NoMatch Then
Me.Bookmark = a.Bookmark
Else
MsgBox „Datensatz nicht gefunden!“
End If
Me!PLZSuch.Value = „“
a.Close
End Sub
Vielleicht hast Du trotz Deiner anderweitigen Lösung noch Lust und Laune Dich ein wenig mit diesen beiden alternative Vorschlägen zu beschäftigen und evtl. auch mal den Code zu testen.
Viele Grüße, tester!