![]() |
Auslesen von Daten / Rechnung mit Datum
Abend zusammen,
Ich programmier schon länger an einer Auftragsverwaltungssoftware für unseren Betrieb. Funktioniert eigentlich recht gut. In einer SQL Datenbank werden diverse Infos zu jedem Auftrag gespeichert (AuftragsID, Auftraggeber, Fall, Datum, Status etc...) Ich hätte jetzt gerne eine Funktion bzw Button der mir in meiner Listview anzeigt 'Heutiges Datum + 5 Tage'. Also alle Fälle die einen Termin in 5 oder weniger Tagen haben. Beim Auftragseingang wird das Datum in die SQL gespeichert. Mach ich das ganze schon bevor ich es in die Listbox lade? Also das Datum mit StrToDate ins Datumsformat bringen und vom aktuellen Datum abziehen? Hat mir evt jemand einen Tipp der mich in die richtige Richtung leitet? Soweit sieht mein Code jetzt aus:
Code:
procedure TForm7.Button_Datum(Sender: TObject);
var ID,a,p,e,s,v,pan :string; datumop, datumheute :TDate; begin datumheute := date; ListView1.Items.Clear; SQLTransaction1.commit; SQLQuery1.Close; SQLQuery1.SQL.Text := 'SELECT * FROM Print_Auftrag WHERE Fertig = :Fertig'; SQLQuery1.Params.ParamByName('Fertig').AsString := ?????????; SQLQuery1.Open; while not SQLQuery1.Eof do begin ID:=((SQLQuery1.Fields[0].AsString)); a :=((SQLQuery1.Fields[2].AsString)); p:=((SQLQuery1.Fields[3].AsString)); e:=((SQLQuery1.Fields[9].AsString)); s:=((SQLQuery1.Fields[15].AsString)); v:=((SQLQuery1.Fields[11].AsString)); pan:=((SQLQuery1.Fields[19].AsString)); with ListView1.Items.Add do begin Caption:=ID; SubItems.Add(a); SubItems.Add(p); SubItems.Add(e); SubItems.Add(s); SubItems.Add(v); SubItems.Add(pan); end; SQLQuery1.Next; end; Label7.Caption := IntToStr(ListView1.Items.Count); end; Gruß Tim |
AW: Auslesen von Daten / Rechnung mit Datum
Je nach verwendeter Datenbank
Code:
SELECT * FROM [table1]
WHERE [datumsfeld] BETWEEN CURDATE() AND CURDATE()+5 |
AW: Auslesen von Daten / Rechnung mit Datum
Hallo,
einfach das Datum einschränken. Select * From Rechnung Where (Datum>=:Heute) And (Datum<=HeutePlus5) ParamByName('Heute').AsDateTime:= Date; ParamByName('HeutePlus5').AsDateTime:= Date+5.0; |
AW: Auslesen von Daten / Rechnung mit Datum
Zitat:
Zitat:
Zitat:
|
AW: Auslesen von Daten / Rechnung mit Datum
Du kannst beides machen. Hängt von der Benutzerführung + den Datenmengen ab. Wenn du rasch zwischen "innerhalb 5 Tagen", "innerhalb 3 Tagen" etc umschalten willst, ist es vielleicht besser, alle Datensätze zu laden und am Client zu filtern. Wenn das eine fixe Ansicht ist, ist es besser wie unten beschrieben, das am Server zu machen.
DATUM - HEUTE < 5 liefert dir auch die überfälligen. Achtung auf NULL Werte, Off-by-one und Zeitanteile beim Datum. |
AW: Auslesen von Daten / Rechnung mit Datum
Leider hab ich noch ein kleines Verständnisproblem.
Das Datum wird in dem Feld Fertig gespeichert in meiner SQL Datenbank.
Code:
var
ID,a,p,e,s,v,pan :string; datumop, datumheute :TDate; begin datumheute := date; ListView1.Items.Clear; SQLTransaction1.commit; SQLQuery1.Close; SQLQuery1.SQL.Text := 'SELECT * FROM Print_Auftrag WHERE [Fertig] BETWEEN CURDATE() AND CURDATE()+5'; SQLQuery1.Params.ParamByName('Fertig').AsString := datetostr(datumheute); SQLQuery1.Open; while not SQLQuery1.Eof do begin ID:=((SQLQuery1.Fields[0].AsString)); a :=((SQLQuery1.Fields[2].AsString)); p:=((SQLQuery1.Fields[3].AsString)); e:=((SQLQuery1.Fields[9].AsString)); s:=((SQLQuery1.Fields[15].AsString)); v:=((SQLQuery1.Fields[11].AsString)); pan:=((SQLQuery1.Fields[19].AsString)); with ListView1.Items.Add do begin Caption:=ID; SubItems.Add(a); SubItems.Add(p); SubItems.Add(e); SubItems.Add(s); SubItems.Add(v); SubItems.Add(pan); end; SQLQuery1.Next; end; Label7.Caption := IntToStr(ListView1.Items.Count); end; |
AW: Auslesen von Daten / Rechnung mit Datum
Zitat:
Code:
SQLQuery1.SQL.Text := 'SELECT * FROM Print_Auftrag WHERE Fertig BETWEEN :Date1 AND :Date2';
SQLQuery1.Params.ParamByName('Date1').AsDateTime := date; SQLQuery1.Params.ParamByName('Date2').AsDateTime := date + 5; |
AW: Auslesen von Daten / Rechnung mit Datum
Die Kombination aus "Select *.." und indiziertem Feldzugriff sollte auf jeden Fall vermieden werden, sonst ist die Funktion ein Roulette Spiel.
|
AW: Auslesen von Daten / Rechnung mit Datum
Zitat:
Leider nein. Und nachträglich ändern wird warscheinlich schwer |
AW: Auslesen von Daten / Rechnung mit Datum
Zitat:
Du kannst den Extraaufwand der nächsten Jahre gegen die Schmerzen einer sofortigen Umstellung berechnen. Besonders wenn das System "jung" und "klein" ist, würde ich allerdings nicht lange nachdenken, sondern diese Umstellung auf Datumstypen für alle Tabellen planen und durchführen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz