PDA

View Full Version : strqmqry und Parameter/Variable



Seiten : [1] 2

Marc_w
30-10-08, 10:03
Hallo
Hab das Problem bei der Übergabe von Werten in die Abfrage.

Die Where Klausel sieht so aus:

WHERE (RDat > date(&Rechnungsdatum))
AND (Route = char(&Routenr))

Das Feld Route ist als 2-stelliges Alphafeld definiert. Es enthält Werte wie z.B. 10, 11, a2 und auch 07 (mit der Null). Wenn ich die 10 eigebe funktioniert die Abfrage, Bei 07 geht es nicht. Wie kann ich die führende Null mit in die Variable schreiben, evtl. mit Cast? Hab auch schon mehrere Varianten mit '&Routenr' versucht, leider ohne Erfolg.

Marc

Fuerchau
30-10-08, 10:11
Die Funktion "char" erlaubt ja alle Inhalte, also auch Zeichenfolgen.

Übergebe also einfach eine Zeichenfolge
... ('''' *cat &myvar *cat '''') ...

Marc_w
30-10-08, 11:08
Hallo Fuerchau.
Hab deinen Tipp gerade getestet.
Leider hat es nicht geklappt, wenn ich im QM die Syntaxprüfung mache kommt folgender Code:

... (Route = ('''' *cat 07 *cat '''')
Wenn die Abfrage ausgeführt wird kommt die Meldung:
Token 07 ungültig. Gültige Token: ,.

Ich vermute das *cat wird nicht richtig interpretiert.

Marc

Fuerchau
30-10-08, 11:14
Das *cat ist Bestandteil deines CLP's!

Du kannst natürlich im SQL auch "... char('&routenr') ..." definieren und übergibst &routenr ohne Hochkomma.

Marc_w
30-10-08, 11:23
Hab die Ausführung zum Testen ohne CL direkt im Query Manager gemacht. Daran wird es wohl liegen. Oder geht das auch ohne CL?

Marc

Fuerchau
30-10-08, 11:38
über Test in QM-Query geht das natürlich auch.
Gib in die Nachricht einfach z.B. 07 ein.
QM-Query übernimmt erst mal alles als Zeichen und SQL entscheidet dann, ob Zeichen oder Wert.

Pikachu
30-10-08, 12:10
Du kannst natürlich im SQL auch "... char('&routenr') ..." definieren und übergibst &routenr ohne Hochkomma.

So geht das leider nicht, da dann &routenr nicht als Variable erkannt wird.

Marc, probier's mal mit DIGITS(ZONED(&Routenr, 2)) anstelle von CHAR(&Routenr)

Hubert
30-10-08, 12:52
Ich hab ein ähnliches Problem so gelöst:

right('00' concat char(&VARIABLE), 2)

So viele 0en im String angegeben, wie ich Zeichen in der right - Funktion benötige, dann wird auch eine übergebene 0 richtig verarbeitet.

Fuerchau
30-10-08, 13:19
ZONED funktioniert aber bei alpha nicht!
Also bleibt nur:

Route = &Routenr

Die benötigten Hochkommata sind dann direkt mit einzugeben. Die Funktion char kannst du dir sparen.

Marc_w
30-10-08, 14:13
Das war´s. Danke für eure Hilfe. Beim nächsten Versuch werd ich das ganze mal mit einem CL testen.
Nur hab ich doch noch einen Fehler in der Datumsabfrage. Es kommt zwar kein Fehler des SQL-Codes, aber die Abfrage > Datum wird einfach nicht beachtet. Es werden alle vorhanden Datensätze dieser Route aufgelistet.
In der Hoffnung auf einen weiteren Tipp.

Marc