Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datum autom. ausrechnen (https://www.delphipraxis.net/138101-datum-autom-ausrechnen.html)

manfred_h 3. Aug 2009 17:11

Datenbank: Firebird • Version: 2.1 • Zugriff über: Fibplus

Datum autom. ausrechnen
 
Hallo zusammen

in meiner Anwendung verwende ich folgenden Code um von einem Datum "maxdate" ein paar Monate dazuzurechnen.
> (FieldByName('CS').Value * 30) // CS glein eine Anzahl von Monaten.

Leider besteht das Problem das dies ab und zu nicht geht. Mir ist nicht ganz klar wieso. :roll:

Delphi-Quellcode:
procedure TDM.main_nc_calc(Sender: TObject);
var maxdate : string;
    d_accept : string;
begin
  with Q_tmp do
  begin
    SQL.Text := ('SELECT MAX( D_DATE ) MAX_OF_D_DATE, D_ACCEPTANCE FROM '+ sql_string_table_d +' WHERE' +
                 '(ID_AREA = '+''''+(''+id_value+''''+')')+
                 'GROUP BY D_ACCEPTANCE ORDER BY 1 DESC');
    ExecQuery;
    Close;
    d_accept := Q_tmp.FieldByName('D_ACCEPTANCE').AsString;
    maxdate := Q_tmp.FieldByName('MAX_OF_D_DATE').AsString;
  end;
  if maxdate > '1' then
    with tmp do
    begin
      Close;
      SelectSQL.Clear;
      SelectSQL.Add (sql_string_table);
      AutoUpdateOptions.UpdateTableName := (table_name);
      Open;
    end;
    tmp.Open;
    Camps.Open;
    with tmp do
    begin
      Edit;
      FieldByName('NC').AsString := DateToStr(StrToDate(maxdate)+((FieldByName('CS').Value * 30)));
      FieldByName('ACCEPTANCE').AsString := d_accept;
      post;
    end;
end;
habt Ihr mir einen Tipp?

Manfred

DeddyH 3. Aug 2009 17:15

Re: Datum autom. ausrechnen
 
Wieso nutzt Du nicht DateUtils (IncMonths oder so ähnlich, kann gerade nicht nachsehen). Und wieso hantierst Du da umständlich mit Strings herum?

mkinzler 3. Aug 2009 17:19

Re: Datum autom. ausrechnen
 
Es gibt in FireBird Datumsfunktionen, entweder als UDF oder in neueren Versionen direkt.
SQL-Code:
Select DateAdd( <month, <Monate>, <Datumsfeld>) ... from <tabelle> ...;

DeddyH 3. Aug 2009 17:20

Re: Datum autom. ausrechnen
 
Das ist natürlich noch besser, war mir komplett entfallen.

SirThornberry 3. Aug 2009 17:20

Re: Datum autom. ausrechnen
 
Zitat:

Leider besteht das Problem das dies ab und zu nicht geht
:glaskugel: Selbst meine Glaskugel verrät mit nicht was hinter der Aussage steckt.
Im Ernst. "geht nicht" ist keine besonder geeignete Fehlerbeschreibung wenn man Hilfe erwartet. Welcher Fehler wird dir denn angezeigt oder was soll passieren und was passiert tatsächlich?

manfred_h 3. Aug 2009 17:31

Re: Datum autom. ausrechnen
 
Zitat:

Zitat von SirThornberry
Zitat:

Leider besteht das Problem das dies ab und zu nicht geht
:glaskugel: Selbst meine Glaskugel verrät mit nicht was hinter der Aussage steckt.
Im Ernst. "geht nicht" ist keine besonder geeignete Fehlerbeschreibung wenn man Hilfe erwartet. Welcher Fehler wird dir denn angezeigt oder was soll passieren und was passiert tatsächlich?

Das Problem ist das kein Fehler angezeit wird sondern einfach kein Resultat.
Werde aber die obigen Vorschläge versuchen.

Die Funktion
SQL-Code:
Select DateAdd( <month, <Monate>, <Datumsfeld>) ... from <tabelle> ...;
sieht sehr interessat aus. Werde das mal ein wenig anschauen.
Besten Dank schon mal.

Shalom
Manfred

manfred_h 5. Aug 2009 08:41

Re: Datum autom. ausrechnen
 
Danke Euch allen für die Hilfe. :thumb:
Momentan habe ich es so gelöst:
Delphi-Quellcode:
FieldByName('NC').AsDateTime := IncMonth(maxdate, +(FieldByName('CS').Value));
@mkinzler Die Lösung von Dir finde ich sehr elegant und werde diese auch noch Testen.

Besten dank nochmals für Eure schnelle Hilfe ! :dp:
Shalom
Manfred


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz