Announcement

Collapse
No announcement yet.

Bei leerem Datumsfeld aktuelles Datum in SQL auswerten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bei leerem Datumsfeld aktuelles Datum in SQL auswerten

    Hallo zusammen,

    ich möchte per Paradox-SQL eine Terminabweichung (EndDate-SollDate as AbwDate) berechnen. Dabei kann es sein, dass der Vorgang schon beendet ist und somit im Feld EndDate ein Datum eingetragen ist oder aber das Projekt noch aktiv ist und somit kein Datum eingetragen ist. In diesem Fall soll das aktuelle Datum als Berechnungsdatum herhalten. Gibt es eine einfache Möglichkeit um dies zu realisiern oder muss ich über eine Temporärtabelle gehen in der per UPDATE in alle NULL-Felder das aktuelle Datum eingetragen und dann erst ausgewertet wird?

    Vielen Dank für Eure Hilfe

    Gruß Gerd

  • #2
    Hi,

    1)
    folgende SQL-Anweisung würde alle offenen Vorgänge liefern, sofern man eine 'ordentliche' SQL-DB benutzt.

    ... where Enddate is not NULL and Enddate > 'NOW'

    2)
    Leider unterstützt 'Paradox-SQL' ( igittigitt ) den Ausdruck 'NOW' nicht. Deshalb kannst du entweder;

    a)
    applikationsseitig anstelle von 'now' das aktuelle Datum in deine Selectanweisung einsetzen

    b)
    nicht now verwenden sondern mit einem Parameter arbeiten

    c)
    dein Feld schon beim Erzeugen mit einem weit entfernt liegendem Endedatum initialisieren ( z.B. 31.12.2500 )

    d)
    oder eben deine 'Holzhammer'-Methode nutzen ;-)

    Gruß
    Gesin

    Comment


    • #3
      Hallo Gerd und Gesine,

      LocalSQL (ist offizieller als igitttigitt) unterstützt NOW nicht. Hier ein Beispiel, um das zu umgehen.
      <pre>
      procedure TForm1.Button1Click(Sender: TObject);
      var
      s: string;
      Auswahl:TDateTime;
      Zeitraum: Integer;
      begin
      {Festlegen, wieviel Tage vorher angezeigt werden sollen.}
      Zeitraum := 2;
      Auswahl := now-Zeitraum;
      with query1 do begin
      Close;
      sql.clear;
      s := 'SELECT LastInvoiceDate FROM customer.db where LastInvoiceDate '+
      '> "'+DateTimeToStr(Auswahl)+'"''';
      sql.Add(s);
      open;
      end;
      end;
      <pre>
      Ich habe es mal etwas ausführlicher gemacht. Der ALIAS zum Nachvollziehen ist DBDEMOS.
      Bitte erst vorher wenigstens ein Datum in der Tabelle auf den neuesten Stand bringen.

      mfg Klaus-Pete

      Comment

      Working...
      X