AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auslesen von Daten / Rechnung mit Datum

Ein Thema von ironman139 · begonnen am 9. Mär 2020 · letzter Beitrag vom 14. Mär 2020
Antwort Antwort
Seite 2 von 3     12 3      
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#11

AW: Auslesen von Daten / Rechnung mit Datum

  Alt 10. Mär 2020, 12:19
Da das ja eine starre Abfrage zu sein scheint (immer 5 Tage Vorschau) dann würde ich da nicht mit Parametern arbeiten sondern mit einem reinen SQL-Statement, das wenn nötig zusätzlich das Datum von einem String in ein Datum umwandelt, also:

SQL-Code:

SELECT * FROM Print_Auftrag WHERE ConvertiereInDatum(Fertig) BETWEEN CURDATE() AND CURDATE()+5
"ConvertiereInDatum" steht für eine entsprechende Funktion deiner Datenbank, konnte jetzt nicht finden, was ihr einsetzt. Könnte z.B. "Convert" in MS SQL sein, TO_DATE in Oracle, usw.

Dann würde ich mir das ganze geraffel mit den Variablen schenken, da die eh nur aus einem Buchstaben bestehen, der nix erklärt hat das keinen Mehrwert. Wenn man das "With" mal drin läßt, fände ich sowas lesbarer:
Delphi-Quellcode:
with ListView1.Items.Add do begin
      Caption:=SQLQuery1.FieldByName('ID').AsString;
      SubItems.Add(SQLQuery1.FieldByName('Irgendwas').AsString);
      //usw.
Und last but not least würde ich für so eine "abgeschlossene" Funktion nicht eine Query verwenden, die ich eh gerade auf dem Form rumliegen habe und so wieder verwende sondern ich würde mir innerhalb der Prozedur eine Query erzeugen, SQL zuweisen, ausführen, Query wieder freigeben.
Ralph
  Mit Zitat antworten Zitat
ironman139

Registriert seit: 1. Nov 2013
24 Beiträge
 
#12

AW: Auslesen von Daten / Rechnung mit Datum

  Alt 10. Mär 2020, 13:42
Ok dann werde ich mich mal damit befassen wie ich das umstellen kann.

So sieht jetzt mein Code sehr unschön aus, das müsste ich jetzt noch 4 mal wiederholen für -4, -3,...

Code:
begin

  datumheute := date;
  datumheute := IncDay(datumheute, -5);


  ListView1.Items.Clear;
    SQLTransaction1.commit;
       SQLQuery1.Close;
    SQLQuery1.SQL.Text := 'SELECT * FROM Print_Auftrag WHERE Ferig LIKE :Fertig';

  SQLQuery1.Params.ParamByName('Fertig').AsString := DateToStr(datumheute);
   SQLQuery1.Open;

    while not SQLQuery1.Eof do
             begin
     with ListView1.Items.Add do begin
      Caption:=(SQLQuery1.Fields[0].AsString);
      SubItems.Add(SQLQuery1.Fields[2].AsString);
      SubItems.Add(SQLQuery1.Fields[3].AsString);
      SubItems.Add(SQLQuery1.Fields[9].AsString);
      SubItems.Add(SQLQuery1.Fields[15].AsString);
      SubItems.Add(SQLQuery1.Fields[11].AsString);
      SubItems.Add(SQLQuery1.Fields[19].AsString);
   end;
        SQLQuery1.Next;

end;
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#13

AW: Auslesen von Daten / Rechnung mit Datum

  Alt 10. Mär 2020, 13:46
Ok dann werde ich mich mal damit befassen wie ich das umstellen kann.
Gut!

So sieht jetzt mein Code sehr unschön aus, das müsste ich jetzt noch 4 mal wiederholen für -4, -3,...
Nein, eine Abfrage für alle Tage von Heute bis Heute+5 Tage!

Die 5-malige Wiederholung von Code ist natürlich möglich, aber eine denkbar schlechte Variante. Jumpy hat 2 weiter oben erklärt wie es ohne Parameter geht.
Gruß, Jo
  Mit Zitat antworten Zitat
ironman139

Registriert seit: 1. Nov 2013
24 Beiträge
 
#14

AW: Auslesen von Daten / Rechnung mit Datum

  Alt 10. Mär 2020, 14:49
Da das ja eine starre Abfrage zu sein scheint (immer 5 Tage Vorschau) dann würde ich da nicht mit Parametern arbeiten sondern mit einem reinen SQL-Statement, das wenn nötig zusätzlich das Datum von einem String in ein Datum umwandelt, also:

SQL-Code:

SELECT * FROM Print_Auftrag WHERE ConvertiereInDatum(Fertig) BETWEEN CURDATE() AND CURDATE()+5
"ConvertiereInDatum" steht für eine entsprechende Funktion deiner Datenbank, konnte jetzt nicht finden, was ihr einsetzt. Könnte z.B. "Convert" in MS SQL sein, TO_DATE in Oracle, usw.

Dann würde ich mir das ganze geraffel mit den Variablen schenken, da die eh nur aus einem Buchstaben bestehen, der nix erklärt hat das keinen Mehrwert. Wenn man das "With" mal drin läßt, fände ich sowas lesbarer:
Delphi-Quellcode:
with ListView1.Items.Add do begin
      Caption:=SQLQuery1.FieldByName('ID').AsString;
      SubItems.Add(SQLQuery1.FieldByName('Irgendwas').AsString);
      //usw.
Und last but not least würde ich für so eine "abgeschlossene" Funktion nicht eine Query verwenden, die ich eh gerade auf dem Form rumliegen habe und so wieder verwende sondern ich würde mir innerhalb der Prozedur eine Query erzeugen, SQL zuweisen, ausführen, Query wieder freigeben.

OK. die Variablen sind schon draußen.
Ich verwende eine MariaDB 10

Für die MariaDB ist die Konvertierung TO_DATE oder STR_TO_DATE.
In den ganzen Beispielen ist das Str Datum aber anderst getrennt (05-03-2020) bei mir ist es aber durch Punkte getrennt.

Ich glaube es führt kein weg vorbei das Format auf Date zu stellen.
Dazu in phpMyAdmin einfach das Format für die Spalte ändern? Und meinen Code anpassen ?
Momentan setze ich mit einem DateTimePicker das Datum in ein Edit Feld und schreib dieses dann in die Datenbank.

Das System selber programmier ich bereits seit 2 Jahren.
Die Datenbank enthält 6000 Aufträge. Daher sollte es halbwegs reibungslos funktionieren.

Geändert von ironman139 (10. Mär 2020 um 15:05 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#15

AW: Auslesen von Daten / Rechnung mit Datum

  Alt 12. Mär 2020, 16:32
Bei str_to_date solltest du als 2. Parameter angeben, in welchem Format dein Datum in dem String vorliegt. Hier mal mein erster Google Treffer dazu:

https://www.w3schools.com/sql/func_m...tr_to_date.asp

also

str_to_date(Fertig, "%d.%m.%Y")
Ralph

Geändert von Jumpy (12. Mär 2020 um 16:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Auslesen von Daten / Rechnung mit Datum

  Alt 12. Mär 2020, 17:42
In den ganzen Beispielen ist das Str Datum aber anderst getrennt (05-03-2020) bei mir ist es aber durch Punkte getrennt.
Chic ist das jetzt Amerikanisches oder deutsches Format?
Wenn schon ein Datum als Text dann wenigstens das ISO-Format (2020-02-02 = 20.Februr 2020!)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#17

AW: Auslesen von Daten / Rechnung mit Datum

  Alt 13. Mär 2020, 05:40
Zitat:
dann wenigstens das ISO-Format (2020-02-02 = 20.Februr 2020!)
..ist das ne Fangfrage? Oder Kontrolle ob das wirklich einer liest?

ISO: YYY-MM-TT
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
309 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Auslesen von Daten / Rechnung mit Datum

  Alt 13. Mär 2020, 06:27
Fast
Chris
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#19

AW: Auslesen von Daten / Rechnung mit Datum

  Alt 13. Mär 2020, 06:37
die Batterie war leer...
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
309 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: Auslesen von Daten / Rechnung mit Datum

  Alt 13. Mär 2020, 07:19
Im übrigen kannst du folgendes machen

Code:
// Neues Feld anlegen
ALTER TABLE Print_Auftrag ADD COLUMN Fertig_neu DATETIME NULL DEFAULT NULL;

// Daten von Fertig in Fertig_Neu konvertieren
UPDATE Print_Auftrag SET Fertig_Neu = STR_TO_DATE(Fertig, "%d.%m.%Y");
Kontrollieren ob die Datumsfelder richtig sind

Code:
// Altes Feld löschen
ALTER TABLE Print_Auftrag DROP COLUMN Fertig;

// Neues Feld in alten Feldnamen umbenennen
ALTER TABLE Print_Auftrag CHANGE COLUMN Fertig_neu Fertig DATETIME NULL DEFAULT NULL;
Jetzt musst nur "nur" noch deinen Code anpassen. .AsString geht immer noch, sieht nur anders aus.
Chris
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 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