Neuigkeiten:

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

Mobiles Hauptmenü

Filtern mit * für Integer Feld

Begonnen von Klaus S. aus B, Februar 17, 2014, 15:41:06

⏪ vorheriges - nächstes ⏩

Klaus S. aus B

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

Hondo

Hallo,
verwende doch einfach die Funktion left():
... WHERE Left(Projektnummern, 3)=123

Gruß Andreas

Klaus S. aus B

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

Hondo

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.

Klaus S. aus B


Klaus S. aus B

...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

MzKlMu

Hallo,
beschreibe mal, was Du da überhaupt vorhast.
Ich kann in dem Code keinen rechten Sinn enddecken.
Gruß Klaus

Hondo

Versuchs mal so:
Me.Filter = "Left([PN],anz)= [PNFilt]"

DF6GL

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?

Klaus S. aus B

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

Klaus S. aus B

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

DF6GL

#11
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



Klaus S. aus B

Super, beide Varianten funktionieren. Wieder was gelernt.

Gruß
Klaus