Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datum auslesen und intern auswerten (https://www.delphipraxis.net/29296-datum-auslesen-und-intern-auswerten.html)

torud 7. Sep 2004 10:30


Datum auslesen und intern auswerten
 
Hallo Wissende!

Leider fehlt mir mal wieder eine richtig gute Idee, wie ich eine kleine einfache Aufgabe umsetzen kann. Ich habe eine kleine DB, in der sich ein Feld für Datumsangaben befindet. Dieses Feld wird so befüllt: tt.mm.jj! Nun möchte ich eine kleine statistische Auswertung machen indem ich die Tage eines jeden Monats zusammenfasse. Ich will also die Datensätze jedes Monats mit einer bestimmten Routine durchlaufen, weiss aber einfach nicht, wie ich da ansetzen soll.

Soweit bin ich derzeit.

Delphi-Quellcode:
for i:=0 to Table1.RecordCount-1 do
  begin
    akt_date:= Table1.FieldValues['date'] as DATE_SHORTDATE
    // und hier dann die auswertung das datums
    // ich will prüfen, von ewlchem monat der eintrag ist und einfach ein feld names "betrag"
    // addieren
    // ungefähr so:
    if akt_date = akt_Monat then
      begin
        akt_betrag:=Table1.FieldbyName('betrag') as integer;
        akt_Summe:=akt_summe + akt_betrag
  end;
Ich weiss halt nicht, wie ich am einfachsten den Monat aus dem Jahr herauslöse, wobei mir der Monat nur solange was nützt, wie das Jahr gleich bleibt. Da ich aber diese Daten archivarisch verwalten muss, müsste ich also Monat und Jahr schon richtig prüfen.

NUR WIE?

Jelly 7. Sep 2004 10:33

Re: Datum auslesen und intern auswerten
 
Kuck dir mal die Funktion DecodeDate an, dir zerlegt dir ein Datum in 3 Word Variablen Year, Month und Day.

Aber dein Vorhaben ließe sich, je nach verwendeter Datenbank, auch elleganter direkt über SQL lösen.

Gruß,
Tom

moritz 7. Sep 2004 10:42

Re: Datum auslesen und intern auswerten
 
Hallo,

das beste wäre wohl die gute alte Unixzeit in der Datenbank abzuspeichern, oder gleich das Datum in Rohform. Sobald du nämlich ein in Delphi gültiges Datum von TDate oder TDateTime hast kannst du mit der Funktion MonthOf (Unit DateUtils) den Monat extrahieren. Ansonsten könntest du - falls du mit einem String als Datum arbeiten willst - auch eine Funktion schreiben die, da das Format ja immer gleich ist, einfach Zeichen 3 bis 5 extrahiert. Das wäre dann der Monat.
Ich empfehel dir nciht die verwendung von den Delphifuntionen DateToStr und StrToDate. Das Problem ist, dass diese Funktionen das Systemdatumsformat verwenden und dir dadurch immer andere "Daten" anzeigen können. Du kannst diesen Funktionen allerdings einen TFormatSettings Parameter übergeben, in den du auch das ShortTimeFormat eintragen kannst. Das würde ich dir auf jeden Fall empfehlen!

:hi: moritz


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 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