Hallo zusammen,
ich hänge mal wieder fest.
Kann ich einen Filter mit "*" für ein Zahlenfeld definieren?
Konkret habe ich eine Liste mit Projektnummern (5stellig). Diese möchte ich filtern und zwar so, dass er die in ein Texfeld eingegebenen Werte (z.B. 3 Stellen) nimmt und alle Projekte anzeigt, die mit diesen 3 Stellen beginnen.
Geht das überhaupt?
Gruß
Klaus
Hallo,
verwende doch einfach die Funktion left():
... WHERE Left(Projektnummern, 3)=123
Gruß Andreas
Hallo Hondo,
vielen Dank, aber wie sieht das das mit der Me.filter Funktion aus? ???
Me.Filter = "[PN] where " & Left([PNFilt], 2)
Me.FilterOn = True
...funktioniert mal nicht.
Gruß
KLaus
Me.Filter = "left([PN],3)=123"
123 musst du halt entsprechend abändern, je nach dem das Feld lautet wo du die 3-Stellige Zahl eingibst.
Super, klappt!
Danke!
...jetzt habe ich gedacht, jetzt hätte ich eine elegante Lösung, aber die funktioniert nicht.
Dim anz As Integer
anz = Len(PNFilt)
Me.Filter = "Left([PN],anz)=" & [PNFilt]
Me.FilterOn = True
Ich dachte mir, ich könnte die Anzahl der eingegebenen Stellen auslesen und das in den Filter mit einbauen. Funktioniert aber nicht.
Wo ist mein Fehler?
Gruß
Klaus
Hallo,
beschreibe mal, was Du da überhaupt vorhast.
Ich kann in dem Code keinen rechten Sinn enddecken.
Versuchs mal so:
Me.Filter = "Left([PN],anz)= [PNFilt]"
Hallo,
"Ich dachte mir, ich könnte die Anzahl der eingegebenen Stellen auslesen und das in den Filter mit einbauen. "
auch die Frage: Was soll das bedeuten?
Hallo zusammen,
also ich habe mir folgendes gedacht:
Ich habe ein Endlosformular, in dem die Projketnummern aufgelistet sind (...damit sie einer "Klammer" zugeordnet werden können [normalerweise nicht notwendig, da diese Zuordnung automatisch erfolgt für neu angelegte PNs, ich habe aber eine Latte "importierter" PNs, für die erst später einer Klammer erstellt wird und die man dann noch zuordnen können muss]).
Es kann jetzt sein, dass mehrere PNs einer Klammer zugeordnet werden sollen, deshalb wäre ein "intelligenter" Filter interessant, bei dem ich die ersten Stellen der PN angeben kann und die Liste dann übersichtlicher wird.
Jetzt kann es sein, dass man nur die ersten ein oder zwei Stellen der PN eingeben muss, um eine übersichtliche Liste zu bekommen, mal muss man 4 Stellen eingeben, damit die Liste übersichtlich wird.
Jetzt war mein Gedanke, dass man die Anzahl der Stellen, die in der left() Funktion definiert werden, einfach über eine Variable erschlägt. Den Wert der Variable erhält man durch Ermitteln der Anzahl eingegebener Stellen in das Filterfeld.
Aber das funktioniert irgendwie nicht.
Kann man den Gedankengang verstehen?
Gruß
Klaus
Zitat von: Hondo am Februar 17, 2014, 22:06:39
Versuchs mal so:
Me.Filter = "Left([PN],anz)= [PNFilt]"
...klappt auch nicht.
Bei meinem Code bekomme ich ein Eingabefeld für "anz", anscheinend erkennt er die Variable nicht wieder.
Bei o.g. Code bekomme ich zwei Parameter Eingabefelder: "anz" und "PNFilt".
Gruß
Klaus
Hallo,
(als exorbitante Ausnutzung der internen Datentypen-Konvertierungen ;D ;) )
Dim anz As Integer
anz = Len(PNFilt)
Me.Filter = "Left([PN]," & anz & " =" & Me![PNFilt] '<edit>
Me.FilterOn = True
Zitat
Diese möchte ich filtern und zwar so, dass er die in ein Texfeld eingegebenen Werte (z.B. 3 Stellen) nimmt und alle Projekte anzeigt, die mit diesen 3 Stellen beginnen:
Vorschlag:
Me.Filter = "CStr([PN]) like '" & [PNFilt] & "*'"
Me.FilterOn = True
Super, beide Varianten funktionieren. Wieder was gelernt.
Gruß
Klaus