PDA

Vollständige Version anzeigen : Numerische Platzhalter


Diego
14.05.2001, 10:28
Hallo
Wenn man in einer Bedingung alle Datensätze ausgeben will, benutzt man im Normalfall den '*'. Wie ich sehe, funktioniert das aber nur mit strings und nicht mit Zahlen.

Wie kann ich z.B. in folgender Bedingung erwirken, dass es den '*' als Platzhalter versteht:

...nz(Nummer,"*")...

Also falls der Benutzer keine Eingabe im Feld Nummer macht, soll es alle bringen.

Wie kann ich den Typenkonflikt beseitigen? Hat jemand eine Idee?

Gruss Diego

TGA_Project
14.05.2001, 11:12
Dein Ansatz sollte doch eigentlich die Lösung sein. Wenn ich in der Query die Abfragebedingung wie folgt definiere, klappt es:

Wie Wenn(EingabeFeld="";"*";...)


WIE "*" gibt alle Sätze zurück, während Du bei ... Deine Bedingung reinsetzen musst, wenn der Benutzer etwas eingetippt hat. (Habe es hier auf ein Autowert-Feld ausprobiert).

------------------
Entstehende Heimat für Programmierer: www.devsource.de (http://www.devsource.de)

Diego
14.05.2001, 13:42
Das mit dem Autowert krieg ich auch nicht hin.

Ich hab nun testhalber eine simple Abfrage erstellt mit einem Autowert "Nummer":

SELECT Nummer, Bezeichnung
FROM t_Filiale
WHERE IIf(isNull(Eingabefeld),Nummer="*",Nummer=Eingabefeld)

Wenn nun das Eingabefeld leer ist, so kommt der Fehler: "Dieser Ausdruck wurde falsch eingegeben. Beispielsweise kann ein numerischer Ausdruck zu viele komplizierte Elemente enthalten."

Da ist genau das Problem, dass der "*" nicht numerisch erkannt wird.

Gibt's statt dem "*" vielleicht ein anderes Zeichen, speziell als Zahlenplatzhalter?

Besten Dank für Eure Tipps!

Gruss Diego

O-Schreiner
14.05.2001, 14:23
Hallo Diego,

das mit dem "*" und dem = also das mit dem Sternchen und dem Istgleichzeichen das passt nicht zusammen! = prüft auf "identisch" was bei Deiner Zahl per Definition ja nicht vorkommen kann (und auch bei Texten so gut wie nie vorkommen wird). Du musst statt dem Istgleich die Like-Klausel verwenden.

Deine Abfrage sieht dann also so aus:

SELECT Nummer, Bezeichnung
FROM t_Filiale
WHERE IIf(isNull(Eingabefeld),Nummer Like "*",Nummer=Eingabefeld);

HTH cu, Olly

Diego
14.05.2001, 14:29
Merci Olly

Mit dem LIKE-Befehl funktioniert's. Wenn man irgendwo in einem Problem vertieft ist, weiss man manchmal das einfachste nicht mehr.

Gruss Diego

O-Schreiner
14.05.2001, 14:48
freut mich :) geht mir oft auch nicht anders