Office: Endlosformular "on-the-fly" filtern

Helfe beim Thema Endlosformular "on-the-fly" filtern in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Zuerst mal meine Aufgabenstellung: Aus einer Tabelle mit Mitgliederdaten sollen „on-the-fly“, d.h. bei Eingabe eines Teils des Namens, die Datensätze... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von IngolfZ, 8. Dezember 2023.

  1. IngolfZ Neuer User

    Endlosformular "on-the-fly" filtern


    Zuerst mal meine Aufgabenstellung:

    Aus einer Tabelle mit Mitgliederdaten sollen „on-the-fly“, d.h. bei Eingabe eines Teils des Namens, die Datensätze der Mitglieder gefiltert werden. Basis ist Access aus Microsoft Office 2019 Professional.

    Mein Lösungsansatz:

    In einem Formular gibt es im Kopf ein ungebundenes Textfeld txt_Name zur Eingabe des Suchstrings.

    Im Detailbereich gibt es ein Endlosformular mit den relevanten Mitgliederdaten.
    Endlosformular "on-the-fly" filtern upload_2023-12-8_14-29-11.png

    Auf txt_Name greife ich im Change-Ereignis über txt_Name.Text zu um nach jedem Eingabezeichen das Textfeld auszuwerten und die Datensatzquelle zu Filtern.

    Mein Problem:

    Mit Eingabe eines Zeichens wird der bisherige Inhalt in txt_Name gelöscht. Interessant ist, wenn ich auf das Statement Me.Filter einen Stop setze und danach die Prozedur weiterlaufen lasse, wird das Textfeld txt_Name nicht gelöscht.

    Hier der Code:

    Code:
    Private Sub txt_Name_Change()                   ' Wird beim Eingeben eines Zeichens aufgerufen
    Dim Filter As String
    Dim Name As String
    
        Name = Me.txt_Name.Text                     ' Übernehme den aktuellen Text
        Debug.Print "Change: " & Name   
    
        Filter = "MiName Like '*" & Name & "*'"     ' Filtere die Datenquelle (Teil von MiName = eingegebener Text)
    
        Me.Filter = Filter                          ' Filter setzen
        Me.FilterOn = (Len(Name) > 0)               ' Filter aktivieren wenn (etwas eingegeben wurde)
    End Sub
    Hat jemand eine Idee, wie ich das besser machen kann?
     
    IngolfZ, 8. Dezember 2023
    #1
  2. Doming
    Doming hat Ahnung
    Moin Ingolf,
    als erstes: vermeide, reservierte Wörter (Name, Filter) als Variablennamen zu nehmen, man weiß nie, wie Access das übersetzt
    ansonsten versuche doch mal
    Code:
    Private Sub txt_Name_Change()                   ' Wird beim Eingeben eines Zeichens aufgerufen
     Dim strFilter As String
     
        strFilter = "MiName Like '*" & Me.txt_Name & "*'"    ' Filtere die Datenquelle (Teil von MiName = eingegebener Text)
        Me.Filter = strFilter                                ' Filter setzen
        Me.FilterOn = Me.txt_Name) <> ""                     ' Filter aktivieren wenn (etwas eingegeben wurde)
        Me.txt_Name.SelStart = Len(Me.txt_Name) + 1          ' setzt den Cursor ans Ende der Eingabe
    End Sub
    Gruß
    Doming
     
    Zuletzt bearbeitet: 8. Dezember 2023
  3. IngolfZ Neuer User
    Danke Doming,
    mit zwei Korrekturen funktioniert dein Code.
    • im FilterOn Statement ist eine ) zuviel
    • beim Zugriff auf txt_Name muss noch noch die Eigenschaft .Text dazu
     
    IngolfZ, 8. Dezember 2023
    #3
  4. IngolfZ Neuer User

    Endlosformular "on-the-fly" filtern

    Hallo und guten Morgen,
    jetzt habe ich mir die Sache nochmal genauer angesehen.

    Der Schlüssel zum Erfolg war das Setzen des Cursors (Eingabemarke) ans Ende des eingegebenen Textes. Dazu nochmals Danke an Doming.Endlosformular "on-the-fly" filtern *:)*

    Noch eine kleine Anmerkung: Beim SelStart zählen die Zeichen ab 0, damit das +1 ist nicht nötig (aber auch nicht schädlich).
    0 ist der Anfang des Feldes, 1 entspricht hinter dem ersten Zeichen u.s.w.
    Sind z.B. 5 Zeichen im Feld enthalten, setzt SelStart = 5 den Cursor hinter das 5te Zeichen.

    Mein jetziger Code sieht wie folgt aus:
    Code:
    Private Sub txt_Name_Change()                  ' Wird beim einbgeben eines Zeichens aufgerufen
    Dim strFilter As String
    Dim strName As String
    
        strName = Me.txt_Name.Text                 ' Übernehme den aktuellen Text
        strFilter = "MiName Like '*" & strName & "*'"  ' Filtere die Datenquelle (Teil von MiName = eingegebener Text)
    
        Me.Filter = strFilter                       ' Filter setzen
        Me.FilterOn = (Len(strName) > 0)            ' Filter aktivieren wenn (etwas eingegeben wurde)
        Me.txt_Name.SelStart = Len(strName)         ' Cursor ans Ende des Textes setzen
    End Sub
     
    IngolfZ, 9. Dezember 2023
    #4
    1 Person gefällt das.
Thema:

Endlosformular "on-the-fly" filtern

Die Seite wird geladen...
  1. Endlosformular "on-the-fly" filtern - Similar Threads - Endlosformular the fly

  2. Access gefilterten Endlosformular die ID (Autowert) in eine Abfrage zu übergeben

    in Microsoft Access Hilfe
    Access gefilterten Endlosformular die ID (Autowert) in eine Abfrage zu übergeben: Hallo Zusammen, ist es möglich, aus einem gefilterten Endlosformular die ID (Autowert) in eine Abfrage zu übergeben? Das habe ich schon ausprobiert: In der Abfrage als Kriterium eingegeben...
  3. Listenfeld im Endlosformular

    in Microsoft Access Hilfe
    Listenfeld im Endlosformular: Hallo in die Runde! Ich stehe gerade furchtbar auf dem Schlauch und hoffe, ihr könnt mir helfen: Problemkind ist eine Art Zimmerverwaltung: - jedes Zimmer hat eine ID und ist einem Objekt...
  4. Im Endlosformular aktiven Datensatz hervorheben

    in Microsoft Access Hilfe
    Im Endlosformular aktiven Datensatz hervorheben: Hallo liebe Mitglieder. Eigentlich benötige ich was ganz einfaches... Ich lasse mir meine Datensätze (Filme) in einem Endlosformular anzeigen. Jeder Datensatz hat diverse Buttons. Klicke ich auf...
  5. Endlosformular aktualisieren, auch optisch

    in Microsoft Access Hilfe
    Endlosformular aktualisieren, auch optisch: Hallo, ich versuche in einem Endlosformular mit einem Kontrollkästchen alle Datensätze zu markieren. Dazu gibt es ein binäres Feld, welches auch im Formular angezeigt wird. Im Formularkopf habe...
  6. Endlosformular mit Abfrage-neue Datensätze

    in Microsoft Access Hilfe
    Endlosformular mit Abfrage-neue Datensätze: Hallo ich erarbeite im Moment im Rahmen eines Projektes eine Datenbank zur Bestellerstellung. Nun habe ich für die Bestellpositionen ein Endlosformular. Erstellt. Als Basis für diese habe ich...
  7. Ansicht Endlosformular

    in Microsoft Access Hilfe
    Ansicht Endlosformular: Hallo ihr Lieben, eine einfache Frage,> weil sie so einfach ist finde ich trotzdem nirgends eine Antwort. Habe nun wie vielleicht bekannt, einige DB's im Einsatz. Was mich jedoch immer noch stört...
  8. Größe Pop-Up Endlosformular wird ignoriert

    in Microsoft Access Hilfe
    Größe Pop-Up Endlosformular wird ignoriert: Hi allerseits, ich habe ein Pop-Up Endlosformular mit einer festen geringen Anzahl von Datensätzen, so dass ich alle Datensätze im Formular anzeigen könnte. Öffne ich das Formular direkt, wird...
Schlagworte:
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden