PDA

Vollständige Version anzeigen : Datumfeld mit Leerzeichen...


dancer1970
25.10.2002, 12:13
Hallo,
könnte mal wieder Hilfe gebrauchen. Der folgende SQL Code soll aus Access heraus auf einer Oracle DB ausgeführt werden.

In den Datumsfeldern ist eine Eingabe nicht vorgeschrieben und ich möchte, wenn kein Inhalt darin ist, dass alles angezeigt wird.
Platzhalter % funktioniert nicht. Auch to_date bringt mich nicht weiter.

Welcher Platzhalter muss gesetzt werden, bzw. wie sollte die Abfrage aufgebaut sein, damit es funktioniert?

Danke Stefan


select * from v_auftrag_position_small
where upper(VALF_V_ADR_NAME1) like '%%'
and upper(VALF_V_STRASSE_STRASSE) like '%%'
and VALF_V_ADR_HNR like '%%'
and upper(VALF_V_ADR_ERG) like '%%'
and upper(VALF_V_ORT_ORT) like '%%'
--and to_date(AUF_DATUM, 'dd.mm.yyyy') between '01.01.1999' and '31.12.2002'
and AUF_DATUM between '01.01.1999' and '31.12.2002'
and upper(POS_KEY_ART) like '%%'
and VALF_V_ADR_KEYNR like '%%'
and POS_POSNR like '1' order by auf_keynr desc;

jmc
25.10.2002, 23:34
Hi Stefan

das hängt vermutlich davon ab, was als Default-Wert im Datumsfeld drin steht, wenn nichts eingegeben wird.
Das könnte NULL sein aber auch irgend ein Low-Value für Datum (1.1.1900 oder so)
Schau das mal nach.
Müsste das dann mal am Montag im Geschäft ausprobieren. (hab hier zuhause kein Oracle ..)

Schönes WE :cool:

Joachim Hofmann
28.10.2002, 16:49
Hallo dancer,

außerdem: falls Access mit ODBC auf Oracle zugreift (kein Access-"Projekt") sind die Platzhalter * und nicht % zu gebrauchen.

.. beziehungsweise:
was soll das
--- where upper(VALF_V_ADR_NAME1) like '%%'
eigentlich tun?

willst Du nicht vielleicht besser ein gewöhnliches
VALF_V_ADR_NAME1 IS NOT NULL
verwenden?

dancer1970
29.10.2002, 14:35
zur Erklärung:
Der SQL Code wird durch Klick auf eine Schaltfläche in einem Access Formular über VBA erstellt.
Die Platzhalterzeichen sind notwendig, da die Inhhalte, die jetzt mit %% gefüllt sind, manchmal durch die werte in den Formularfeldern eingesetzt werden.
Der default Wert wird durch einen Trigger gesetzt. In diesem Fall

:new.AUF_DATUM := Sysdate;

Ich möchte aber doch nur erreichen, dass wenn ich nichts eintrage alles genommen wird, werde das aber wohl durch Standardwerte von 01.01.1900 bis 31.12.2999 ersetzen müssen, oder?

Danke für die antworten.