Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Probleme mit FindFirst

Begonnen von Gockel67, Oktober 13, 2024, 11:37:19

⏪ vorheriges - nächstes ⏩

Gockel67

Moin Gemeinde,

ich habe eine Tabelle (tblEigenschaften) die nur ein Feld (Eigenschaft) und die ID enthält.
Mit einer Form (frmEigenscchaften) kann ich diese Datensätze bearbeiten (also das übliche - Navigation, Neuer Datensatz, Datensatz löschen etc.). Beim laden der Form wird alphabetisch sortiert.

Da es mit der Navigation mühselig ist bis z.B. zum Datensatz zu kommen der mit 'S' anfängt wollte ich Buttons erstellen von A - Z und mit FindFirst zu diesem Datensatz springen.

Aber egal was ich anstelle - es gibt keine Fehlermeldung aber es passiert auch nichts. Das Formular bleibt auf dem ersten Datensatz stehen. Ich hab jetzt schon viele Beispiele aus dem Internet probiert und keiner hat funktioniert.

Hier mal ein Beispiel:

    Eigenschaft.SetFocus
    ' Stringwert suchen, daher die ''
    Me.Recordset.FindFirst "[Eigenschaft] = 'S'"

Was mache ich falsch?
Oder ist die FindFirst Methode für meinen Zweck gar nicht geeignet und ich muss das ganz anders angehen?

Noch zur Information: Ich beschäftige mich mit Access immer nur so weit wie ich es für meine eigentlichen Hobbys benötige. Habt also bitte Nachsicht mit mir  ;D

Schönen Sonntag

MzKlMu

#1
Hallo,
Du suchst ja nur nach dem S.
Du musst ein Ersetzungszeichen (Joker) anhängen.
Me.Recordset.FindFirst "[Eigenschaft] = 'S'" & "*"Findet alles was mit s (oder S) beginnt.

Warum suchst Du nicht mit einem Kombifeld ?
Ein Kombi ergänzt die eingegeben Zeichen automatisch und zwar bei jedem Zeichen, sodass man sehr schnell den gewünschten Datensatz findet.
Die Buttons (A-Z) sind dann überflüssig.
Gruß Klaus

Gockel67

Hallo Klaus,

danke für deine schnelle Antowrt.
Deine Lösung produziert leider einen Fehler 3077. Syntaxfehler (fehlender Operator) in Ausdruck.
Ich find das mit den Buttons halt einfach chic  ;)

Schönen Sonntag
Jörg

MzKlMu

Hallo,
bitte zeige wie du es gemacht hast.
Und bitte den kompletten Code zeigen und nicht nur die unvollständigen Schnipsel.
Und die Codetags verwenden.
Gruß Klaus

Gockel67

So sieht das aus

Private Sub btnS_Click()

    Eigenschaft.SetFocus
    Me.Recordset.FindFirst "[Eigenschaft] = 'S'" & "*"

End Sub

Schönen Sonntag

MzKlMu

#5
Hallo,
mit dem Joker muss Like (Wie) verwendet werden. Außerdem ist der String falsch zusammengesetzt.
Beides hatte ich vorhin auch übersehen.
Me.Recordset.FindFirst "[Eigenschaft] Like 's" & "*'"Oder etwas kürzer:
Me.Recordset.FindFirst "[Eigenschaft] Like 's*'"Das Setfocus braucht es nicht.
Gruß Klaus

Bitsqueezer

Hallo,

gibt es übrigens auch kostenlos schon fertig:
https://www.add-in-world.com/katalog/azregister/

Gruß

Christian

Gockel67

Suuuuper.Danke Klaus. So funktioniert es. Werde dich lobend in mein Nachtgebet mit einschließen  ;D

Gockel67

Danke Christian,
das werde ich mir bei Gelegenheit auch mal anschauen.

Gockel67

Noch eine Frage dazu.

Lässt es sich irgendwie abfangen wenn ein Buchstabe noch nicht vergeben ist? Es sollte dann eine Msgbox ausgegeben werden. Bei nichtvorhanden springt er kommentarlos zum ersten Datensatz. Mit NoMatch komme ich irgendwie nicht weiter.

Wünsche allen einen schönen Wochenstart

Knobbi38

Hallo,

findfirst und andere Methoden, welche zum verändern des aktuellen Records geeignet sind, sollte man besser mit einem Recordsetclone machen, dann hat das keine Auswirkungen auf die Anzeige im Formular.