DateTimePicker
Hallo Leute,
und zwar habe ich folgendes Problem: ich habe eine Tabelle in einem DBGrid und möchte mithilfe von zwei DateTimePickern (einer für den ersten Tag und einer für den Letzten) in meinem DBGrid filtern, dass nurnoch die Daten angezeigt werden, die im DBGrid so vorkommen. Ich versuche das ganze über ein OnChange Ereignis zu machen, weiß aber nicht so richtig, wie ich auf die Spalte Datum aus meinem Grid zugreifen kann. Also beispielsweise sollen wenn die DateTimePicker auf 01.01.2017 und 31.01.2017 stehen sollen alle Ergebnisse aus dem Januar angezeigt werden |
AW: DateTimePicker
Hallo,
du musst das dazugehörige Query. bzw. Table nutzen um die Daten zu filtern, nicht das DBGrid selbst. |
AW: DateTimePicker
Moin,
was für eine Datenbank setzt Du denn ein? Der Ablauf könnte so aussehen 1. DB schließen 2. neues SQL Statement mit den neuen Tages-Grenzen 3. DB wieder öffnen und das ganz z. B. wenn der zweite DataTimePicker geändert wurde. |
AW: DateTimePicker
Okay ich versuche das ganze jetzt so:
Delphi-Quellcode:
aber ich bekomme die Fehlermeldung
procedure TForm1.DateTimePicker3Change(Sender: TObject);
begin if CheckBox1.Checked = True then KST_LagerbewertungQuery.SQL := ('SELECT * FROM KST_Lagerbewertung' + 'WHERE ''SollGeliefert'' BETWEEN DateTimePicker3 AND DateTimePicker4') else KST_LagerbewertungQuery.SQL := ('SELECT * FROM KST_Lagerbewertung' + 'WHERE ''IstGeliefert'' BETWEEN DateTimePicker3 AND DateTimePicker4') end; procedure TForm1.DateTimePicker4Change(Sender: TObject); begin if CheckBox1.Checked = True then KST_LagerbewertungQuery.SQL := ('SELECT * FROM KST_Lagerbewertung' + 'WHERE ''SollGeliefert'' BETWEEN DateTimePicker3 AND DateTimePicker4') else KST_LagerbewertungQuery.SQL := ('SELECT * FROM KST_Lagerbewertung' + 'WHERE ''IstGeliefert'' BETWEEN DateTimePicker3 AND DateTimePicker4') end;
Code:
in den Zeilen mit else und end;
[dcc32 Fehler] Unit1.pas(161): E2010 Inkompatible Typen: 'TStrings' und 'string'
|
AW: DateTimePicker
@rokli ich benutze MS SQL
oh ich habe ganz vergessen zu schreiben, dass ich eine Checkbox habe, die je nachdem was ausgewählt eine Spalte in der Tabelle sucht also "IstGeliefert" und "SollGeliefert", welche ebenfalls beide DateTimePicker sind |
AW: DateTimePicker
Zwei Dinge:
Ich habe jetzt nicht die Syntax des MS SQL Servers im Kopf, also ohne Gewähr der Vollständigkeit:
Delphi-Quellcode:
Möglicherweise musst du vor der Nutzung der Parameter noch den Typ festlegen.
KST_LagerbewertungQuery.SQL := 'SELECT * FROM KST_Lagerbewertung' +
'WHERE ''SollGeliefert'' BETWEEN :Picker3 AND :Picker4'; KST_LagerbewertungQuery.ParamByName('Picker3').AsDateTime := DateTimePicker3.Date; KST_LagerbewertungQuery.ParamByName('Picker4).AsDateTime := DateTimePicker4Date; Grüße Mikhal |
AW: DateTimePicker
Danke Mikhal,
ich musste noch, wie du dachtest, die Typen der Parameter festlegen und dann klappte es. |
AW: DateTimePicker
sehr hübsch, dass das jetzt klappt :)
|
AW: DateTimePicker
Hallo,
ist es nicht einfacher Filter zu nutzen?
Code:
Dann musst du die Daten nicht noch mal von DB holen.
KST_LagerbewertungQuery.Filter:= 'SollGeliefert <= '
+ QuotedStr(DateToStr(DateTimePicker3.Date)) + ' and SollGeliefert <= ' + QuotedStr(DateToStr(DateTimePicker4.Date)); KST_LagerbewertungQuery.Filtered := True; Gruß Galex |
AW: DateTimePicker
Du musst zwar nicht die Daten erneut von der Datenbank abrufen, aber es gibt da wieder andere Probleme:
Grüße Mikhal |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 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