Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sortierung klappt nicht korrekt (SQL) (https://www.delphipraxis.net/204374-sortierung-klappt-nicht-korrekt-sql.html)

Gandimann 24. Mai 2020 19:22

Sortierung klappt nicht korrekt (SQL)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Freunde ,
ich versuche seit mitte April das Problem zu beheben ... leider bis heute ohne Erfolg. Kann bitte jemand mal in den Project reinschauen?
Es sollen nach Knopf "Sort" klicken alle Einträge entsprechend vordefinierte Variabeln (HOD1 , HOD2,HOD3,.....HOD7) verglichen und in den Listbox2 erscheinen.

Fehler:
Es fehlen aber von PO_ADID 1 ---> 27.05.20 und von PO_ADID 5 -----> 31.05.20

Thanks in Advance
:hi:

philipp.hofmann 24. Mai 2020 19:54

AW: Sortierung klappt nicht korrekt (SQL)
 
Ich habe jetzt nur grob drüber geschaut, aber da du die Vergleiche auf String-Basis durchführst, solltest du das Format mit TFormatSettings festlegen oder noch besser wirklich den ganzzahligen Teil von TDateTime (d.h. ohne Uhrzeit) vergleichen.

Gandimann 24. Mai 2020 20:16

AW: Sortierung klappt nicht korrekt (SQL)
 
Danke Philipp,
für deine Rückmeldung...
Habe dies bereits versucht ..auch mit Vergleich: " if FDquery1.FieldByName('PO_FBEGIN_TIME').Value = HOD1 then"
Ergebnis bleibt gleich.
Irgendwo habe ich Fehler bzw. Denkfehler. :pale:

hoika 24. Mai 2020 20:57

AW: Sortierung klappt nicht korrekt (SQL)
 
Hallo,
ganzzahlig heisst:
DateOf benutzen.

Gandimann 24. Mai 2020 21:12

AW: Sortierung klappt nicht korrekt (SQL)
 
Hallo Heiko,
was meinst du mit "DateOF".

Nach meine Recherche Vergleichung läuft korrekt aber sobald ein Datensatz fehlt hier zB. HOD1 = 24.05.20 Ergebnis ist fehlerhaft.

Gandimann 24. Mai 2020 21:31

AW: Sortierung klappt nicht korrekt (SQL)
 
mit

if dateOf(FDquery1.FieldByName('PO_FBEGIN_TIME').AsDa teTime ) = StrToDate(HOD1) then

Selbe Ergebnis...also fehlerhaft. :pale:

hoika 25. Mai 2020 07:33

AW: Sortierung klappt nicht korrekt (SQL)
 
Hallo,
schon mal einen Breakpoint gesetzt und nachgeschaut?

TigerLilly 25. Mai 2020 08:03

AW: Sortierung klappt nicht korrekt (SQL)
 
Hmm. Du verwendest Locate + prüfst nicht, ob was gefunden wurde. Das würde ich ändern.

Die for-Schleife mit nachgelagertem Locate würde ich umbauen. Entweder ein Select, das dir gleich den gewünschten Datensatz liefert oder ein WHILE NOT EOF

Lass dir doch mal ausgeben, welche Daten überhaupt gefunden werden.

philipp.hofmann 25. Mai 2020 08:44

AW: Sortierung klappt nicht korrekt (SQL)
 
Zitat:

if dateOf(FDquery1.FieldByName('PO_FBEGIN_TIME').AsDa teTime ) = StrToDate(HOD1) then
Hier nutzt du ja nur auf der einen Seite dateOf, also ein DateTime ohne Time und auf der anderen Seite einen String. Kann ja nicht gehen.
Um es im Debugger einfacher zu haben, würde ich hier die mathematischen Funktionen nutzen, da TDatetime intern ja ein Double ist, sprich

Delphi-Quellcode:
  var val1,val2:integer;
  val1:=trunc(FDquery1.FieldByName('PO_FBEGIN_TIME').AsDateTime);
  val2:=trunc(HOD1);
  if (val1=val2) then
  ...
Damit lässt sich auf jeden Fall nachvollziehen, wann es true ergibt und wann nicht.

Gandimann 25. Mai 2020 22:55

AW: Sortierung klappt nicht korrekt (SQL)
 
Dear Friends,
vielen lieben Dank !
für eure Hilfe und Ansätze. Nach fast 8 Tassen Kaffe / 5 Stunden habe ich nun endlich Fehler gefunden. Hier ist

aktuell Ausschnitt der Code:

HOD1 := DateToStr(dtp1.date);
HOD2 := DateToStr(dtp1.date + 1);
HOD3 := DateToStr(dtp1.date + 2);
HOD4 := DateToStr(dtp1.date + 3);
HOD5 := DateToStr(dtp1.date + 4);
HOD6 := DateToStr(dtp1.date + 5);
HOD7 := DateToStr(dtp1.date + 6);

begin
for i := 1 to lstItems.Items.Count do begin

Emply := lstItems.Items.Strings[i - 1];
qry_RPT_PO.Close;
qry_RPT_PO.SQL.Text := 'select * from Posium where PO_FBEGIN_TIME >='
+ QuotedStr(datetostr(tt_D1_dt)) + 'and PO_FBEGIN_TIME <='
+ QuotedStr(datetostr(tt_D1_dt + 6)) + 'and PO_ADID ='
+ QuotedStr(Emply) + 'order by Po_Fbegin_Time ASC';
qry_RPT_PO.Open;

for L := 1 to qry_RPT_PO.RecordCount do begin

if HOD1 = qry_RPT_PO.FieldByName('PO_FBEGIN_TIME').asstring then begin

Emply := qry_RPT_PO.FieldByName('PO_ADID').asstring;
qry_RPT_DP.Locate('HO_ADID', Emply, []);
qry_RPT_DP.Edit;
qry_RPT_DP.FieldByName('HO_D1').Value := qry_RPT_PO.FieldByName('PO_MEMO').asstring;
qry_RPT_DP.ApplyUpdates;
end;
if HOD2 = qry_RPT_PO.FieldByName('PO_FBEGIN_TIME').asstring then
begin

Emply := qry_RPT_PO.FieldByName('PO_ADID').asstring;
qry_RPT_DP.Locate('HO_ADID', Emply, []);
qry_RPT_DP.Edit;
qry_RPT_DP.FieldByName('HO_D2').Value := qry_RPT_PO.FieldByName('PO_MEMO').asstring;
qry_RPT_DP.ApplyUpdates;
end;
if HOD3 = qry_RPT_PO.FieldByName('PO_FBEGIN_TIME').asstring then
begin

Emply := qry_RPT_PO.FieldByName('PO_ADID').asstring;
qry_RPT_DP.Locate('HO_ADID', Emply, []);
qry_RPT_DP.Edit;
qry_RPT_DP.FieldByName('HO_D3').Value := qry_RPT_PO.FieldByName('PO_MEMO').asstring;
qry_RPT_DP.ApplyUpdates;
end;
if HOD4 = qry_RPT_PO.FieldByName('PO_FBEGIN_TIME').asstring then
begin

Emply := qry_RPT_PO.FieldByName('PO_ADID').asstring;
qry_RPT_DP.Locate('HO_ADID', Emply, []);
qry_RPT_DP.Edit;
qry_RPT_DP.FieldByName('HO_D4').Value := qry_RPT_PO.FieldByName('PO_MEMO').asstring;
qry_RPT_DP.ApplyUpdates;
end;
if HOD5 = qry_RPT_PO.FieldByName('PO_FBEGIN_TIME').asstring then
begin

Emply := qry_RPT_PO.FieldByName('PO_ADID').asstring;
qry_RPT_DP.Locate('HO_ADID', Emply, []);
qry_RPT_DP.Edit;
qry_RPT_DP.FieldByName('HO_D5').Value := qry_RPT_PO.FieldByName('PO_MEMO').asstring;
qry_RPT_DP.ApplyUpdates;
end;
if HOD6 = qry_RPT_PO.FieldByName('PO_FBEGIN_TIME').asstring then
begin

Emply := qry_RPT_PO.FieldByName('PO_ADID').asstring;
qry_RPT_DP.Locate('HO_ADID', Emply, []);
qry_RPT_DP.Edit;
qry_RPT_DP.FieldByName('HO_D6').Value := qry_RPT_PO.FieldByName('PO_MEMO').asstring;
qry_RPT_DP.ApplyUpdates;
end;

if HOD7 = qry_RPT_PO.FieldByName('PO_FBEGIN_TIME').asstring then
begin

Emply := qry_RPT_PO.FieldByName('PO_ADID').asstring;
qry_RPT_DP.Locate('HO_ADID', Emply, []);
qry_RPT_DP.Edit;
qry_RPT_DP.FieldByName('HO_D7').Value := qry_RPT_PO.FieldByName('PO_MEMO').asstring;
qry_RPT_DP.ApplyUpdates;
end;
qry_RPT_PO.Next;
end;
end;
end;
end;

__________________________________________________ ____________

May God bless you all:hello::hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr.
Seite 1 von 2  1 2      

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