Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Merkwürdige Verhalten im FilterTexfeld

Begonnen von WhiteCrow, Juni 11, 2015, 22:06:29

⏪ vorheriges - nächstes ⏩

WhiteCrow

Guten Abend.
Folgende Szenario:
Hab 2 Textfelder (im Formularkopf) mit "bei Taste auf" folgendem Code:


Private Sub f_SearchTitle_KeyUp(KeyCode As Integer, Shift As Integer)
a = FilterNew("f_Title LIKE '" & f_SearchTitle.Text & "*'", 1)
End Sub

und

Private Sub f_SearchBox_KeyUp(KeyCode As Integer, Shift As Integer)
a = FilterNew("f_BoxNumber LIKE '" & f_SearchBox.Text & "*'", 2)
End Sub



Außerdem noch:

Public Function FilterNew(FltWert As String, FltArt As Integer)

    If FltArt = 1 Then
        Me.Form.Filter = FltWert & " AND " & "f_BoxNumber LIKE '*" & Me.f_SearchBox & "*'"
    Else
        Me.Form.Filter = FltWert & " AND " & "f_Title LIKE '*" & Me.f_SearchTitle & "*'"
    End If
    Me.Form.FilterOn = True
   
End Function


...welche mit im Detailbereich Datensatzfilterung durchführen sollten.
Bei "setzen" von ersten Zeichen werden bereits Datensätze korrekt gefiltert.
Je doch beim setzten von zweiten und jeden weiteren Zeichen (also weiterschreiben),
wird das erste gelöscht bzw. ersetzt. und bleibt letzte als einzige "stehen".
Was habe ich da Falsch gemacht?
Für Info bedanke mich im voraus,
Gruß

WhiteCrow

schon gefunden.
Feldbezeichnungen überarbeitet
BIGsry

WhiteCrow

Dazu noch andere Frage:
Kann man diesen Filter, irgenwie um 2 weitere Textfelder ergenzen?


Public Function FilterNew(FltWert As String, FltArt As Integer)

    If FltArt = 1 Then
        Me.sfrm_Search.Form.Filter = FltWert & " AND " & "f_Title LIKE '*" & Me.f_Title & "*'"
    Else
        Me.sfrm_Search.Form.Filter = FltWert & " AND " & "f_BoxNumber LIKE '*" & Me.f_BoxNumber & "*'"
    End If
    Me.sfrm_Search.Form.FilterOn = True
   
End Function

...nach meinem Wissen (Stand) und goggelle Recherchen,
darf man nur ein mal End If (im disen Beispiel) verwenden.
Je doch werde auf 4 Textfelder angewisen.

Danke im voraus!
Gruß

DF6GL

Hallo,

vermutlich suchst Du sowas:


Public Function FilterNew(FltWert As String, FltArt As Integer)

    If FltArt = 1 Then
        Me.sfrm_Search.Form.Filter = FltWert & " AND " & "f_Title LIKE '*" & Me.f_Title & "*'"
    ElseIf FltArt = 2
        Me.sfrm_Search.Form.Filter = FltWert & " AND " & "f_BoxNumber LIKE '*" & Me.f_BoxNumber & "*'"


    ElseIF FltArt = 3

' tu hier das, was gewollt ist...

    End If
    Me.sfrm_Search.Form.FilterOn = True
   
End Function


Besser in solchen Fällen wäre

Select Case FltArt
Case 1
'mach hier, wenn FltArt = 1
Case 2
'mach hier, wenn FltArt = 2

Case 3
'mach hier, wenn FltArt = 3

Case else
'mach hier, wenn nix zutrifft

End Select
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

WhiteCrow

Hi!
zum ersten Vorschlag -bekomme ständig Koplifehler
beim Cases Vorschlag:
Hab schon bereits so gehabt:

Private Sub f_BoxNumber_Change()
    Call FilterNew(Me!f_BoxNumber.Text, 1)
    Me!f_BoxNumber.SelStart = 100
End Sub

Private Sub f_Title_Change()
    Call FilterNew(Me!f_Title.Text, 2)
    Me!f_Title.SelStart = 100
End Sub

Private Sub f_Genre_Change()
    Call FilterNew(Me!f_Genre.Text, 3)
    Me!f_Genre.SelStart = 100
End Sub

Private Sub f_MPRS_Change()
    Call FilterNew(Me!f_MPRS.Text, 4)
    Me!f_MPRS.SelStart = 100
End Sub

Private Sub Form_Open(Cancel As Integer)
    Call FilterNew
End Sub

Private Function FilterNew(Optional ByVal sFltWert As String = "", _
                           Optional ByVal iFltArt As Integer = 0)
    Select Case iFltArt
      Case 0:
        Me!sfrm_Search.Form.Filter = ""
      Case 1:
        Me!sfrm_Search.Form.Filter = "f_BoxNumber LIKE '*" & sFltWert & "*' " & _
                                "AND f_Title LIKE '*" & Me!f_Title & "*' " & _
                                "AND f_Genre LIKE '*" & Me!f_Genre & "*' " & _
                                "AND f_MPRS LIKE '*" & Me!f_MPRS & "*' "

      Case 2:
        Me!sfrm_Search.Form.Filter = "f_Title LIKE '*" & sFltWert & "*' " & _
                                "AND f_BoxNumber LIKE '*" & Me!f_BoxNumber & "*' " & _
                                "AND f_Genre LIKE '*" & Me!f_Genre & "*' " & _
                                "AND f_MPRS LIKE '*" & Me!f_MPRS & "*' "
      Case 3:
        Me!sfrm_Search.Form.Filter = "f_Genre LIKE '*" & sFltWert & "*' " & _
                                "AND f_BoxNumber LIKE '*" & Me!f_BoxNumber & "*' " & _
                                "AND f_Title LIKE '*" & Me!f_Title & "*' " & _
                                "AND f_MPRS LIKE '*" & Me!f_MPRS & "*' "
      Case 4:
        Me!sfrm_Search.Form.Filter = "f_MPRS LIKE '*" & sFltWert & "*' " & _
                                "AND f_BoxNumber LIKE '*" & Me!f_BoxNumber & "*' " & _
                                "AND f_Title LIKE '*" & Me!f_Title & "*' " & _
                                "AND f_Genre LIKE '*" & Me!f_Genre & "*' "
    End Select
    Me!sfrm_Search.Form.FilterOn = iFltArt > 0
End Function

... je doch mit selben Resultat:
Erste zwei Textfelder ( f_BoxNumber und f_Title) funktionieren 1A
aber jede weitere Texfeld ( f_Genre und f_MPRS) zerhauen ohne Fehlermeldung die Suche/Filterung.

noch ein Tip? ^^

DF6GL

Hallo,

was heißt denn nun "zerhauen "  ??

Wird das Falsche gefiltert, oder überhaupt nichts?

Bist Du sicher, dass es die eingegeben Kombinationen überhaupt gibt?

Stimmen die Datentypen ?
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

WhiteCrow

#6
Zitat
was heißt denn nun "zerhauen "  ??
Wird das Falsche gefiltert, oder überhaupt nichts?
...Das heißt wen ich im dritten oder 4ten Textfeld nach etwas suche wird im UF (sfrm_Search) kein gefiltertes DS bleiben,
sondern sofort alles ist wek bzw. komplett geleert.

ZitatBist Du sicher, dass es die eingegeben Kombinationen überhaupt gibt?
Stimmen die Datentypen ?

Bin mir sicher aber auch total verunsichert.
Ist bestimmt wider etwas, was so offensichtlich ist, das man nicht druff kommt. :P

DF6GL

Hallo,

nun, bei den Datentypen hast Du gelogen..   Die sind vom Datentyp Zahl und zudem noch als Nachschlagefeld in der Tabelle ausgeführt.  Wirf diese Nachschlagefelder heraus und benutze ein Kombifeld im Formular stattdessen. Dann wird das Ganze klarer...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

WhiteCrow

Zitat von: DF6GL am Juli 01, 2015, 22:22:46
nun, bei den Datentypen hast Du gelogen...
was heißt "gelogen"? Dachte das spielt keine rolle. o_O?
Zu wenig nachgedacht und zu schnell geantwortet.

ZitatDie sind vom Datentyp Zahl und zudem noch als Nachschlagefeld in der Tabelle ausgeführt.
Stimmt, Autowert, andere Tabelle usw. ...mist *hust.
Mache mich sofort am Werk

WhiteCrow

#9
Hab auch mit Kombis und veränderten Bezihungen versucht.
So oder so, beim Auswahl passiert garnichts. (keine DS weniger).
Meine befürchtung ist jetzt: -Das funktioniert nur mit Textfldern und mit nichts anderen.
Jetzige Status ist 2 Textfelder sind ok, aber auf die weiteren zwei Filterungsmöglichkeiten -muss ich erstmal verzichten.

DF6GL

Hallo,

da der Code so geschrieben ist, dass er Textdaten "verarbeitet" (Like-Operator, Hochkommata),funktioniert das auch nur mit Textfeldern (Tabellenfelder mit Datentyp "Text")..

Zitatwas heißt "gelogen"?
Gelogen heißt, die Unwahrheit gesagt zu haben...  ;-)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

WhiteCrow

Wie könnte ich das anders lösen (2 auf Text, 2 auf Zahl)? Alternativvorschlag?

DF6GL

Hallo,

zeig erst mal ein konkretes Beispiel der dahinterliegenden Tabellen und -Felder und nach was dabei gefiltert werden soll...  sonst eiern wir weiter im Dunkeln herum.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MaggieMay

#13
Hallo,
Zitat von: DF6GL am Juli 03, 2015, 17:54:24da der Code so geschrieben ist, dass er Textdaten "verarbeitet" (Like-Operator, Hochkommata),funktioniert das auch nur mit Textfeldern (Tabellenfelder mit Datentyp "Text")
das ist nicht zutreffend, man kann auch Zahlen mit LIKE und Suchmustern filtern, und sogar bei Datumsfeldern funktioniert das. Zwangsläufig kommen dabei dann auch Hochkommata zum Einsatz.

---und wie stehst du nun zur Definition von "gelogen"?!   ;)
Freundliche Grüße
MaggieMay

WhiteCrow

Leider ist mit die "Materie" noch zu hoch...
deswegen kann nur Teilweise oder gar nichts drüber rausgogelln.