![]() |
Datenbank: MSSQL • Version: ? • Zugriff über: TADO Query
Nur Daten zwischen 2 DateTimePickern anzeigen
Hi Leute,
ich bin dabei einen Filter in eins meiner Programme einzubauen, bei dem man 2 DateTimePicker hat und nur die Daten(Informationen) die zwischen diesen Daten(Kalender) liegen. Ich habe noch einige andere Filtermöglichkeiten, die alle klappen, allerdings weiß ich nicht wie ich die Daten in einen String umgewandelt bekomme, mein Code sieht an der Stelle bis jetzt so aus
Delphi-Quellcode:
procedure TAufgabenForm.DBDurchsuchen();
var Filter: string; begin // Wieviele Ergebnisse werden angezeigt Filter := Edit3.Text; if Filter <> '' then SQLBefehl := 'SELECT TOP ' + Filter + ' * FROM Aufgaben WHERE Erledigt <> 1' else SQLBefehl := 'SELECT TOP 1 * FROM Aufgaben WHERE Erledigt = 0'; // Nach was wird gefiltert? if (Edit1.Text <> '') then SQLBefehl := SQLBefehl + (' AND MitarbeiterNr LIKE ''%' + StringReplace(Edit1.Text, '*', '%', [rfReplaceAll]) + '%'''); if (Edit2.Text <> '') then SQLBefehl := SQLBefehl + (' AND MitarbeiterGruppe LIKE ''%' + StringReplace(Edit2.Text, '*', '%', [rfReplaceAll]) + '%'''); // Wenn auch nach Datum gefiltert wird if CheckBox1.Checked then SQLBefehl := SQLBefehl + (' AND ' + DateTimePicker1.Date + ' <= Datum AND Datum <= ' + DateTimePicker2.Date + ' '); // Hier weiß ich nicht was hin muss // StandardSQL SQLBefehl := SQLBefehl + (' ORDER BY Position '); AufgabenQuery.Close(); AufgabenQuery.SQL.Text := SQLBefehl; AufgabenQuery.Open() end; |
AW: Nur Daten zwischen 2 DateTimePickern anzeigen
Tu Dir selbst einen Gefallen und parametrisiere Deine Statements (Parameter werden direkt im SQL-String durch Doppelpunkt gekennzeichnet). Beispiel:
Delphi-Quellcode:
Direkt im Editor getippt, deshalb ungetestet.
DingsQuery.SQL.Text := 'SELECT Lalala FROM Tabelle WHERE Datum BETWEEN :mindatum AND :maxdatum';
DingsQuery.ParamByName('mindatum').AsDate := DTPMin.Date; DingsQuery.ParamByName('maxdatum').AsDate := DTPMax.Date; DingsQuery.Open; [edit] Bei TADOQuery heißt es dann DingsQuery.Parameters.ParamByName [/edit] |
AW: Nur Daten zwischen 2 DateTimePickern anzeigen
Ich hab leider bisher noch nicht mit Parametern gearbeitet, ich denke sonst wäre ich alleine drauf gekommen
Ich hab die betroffene Stelle jetzt zu
Delphi-Quellcode:
geändert. Allerdings bekomme ich noch die Fehlermeldung, dass die Parameter nicht gefunden werden
if CheckBox1.Checked then
SQLBefehl := SQLBefehl + (' AND Datum BETWEEN :mindatum AND :maxdatum'); AufgabenQuery.Parameters.ParamByName('mindatum').Value := DateTimePicker1.Date; AufgabenQuery.Parameters.ParamByName('maxdatum').Value := DateTimePicker2.Date; |
AW: Nur Daten zwischen 2 DateTimePickern anzeigen
Du hast ja auch nur den SQL-Befehl zusammengebaut, ihn aber nicht der Query zugewiesen.
|
AW: Nur Daten zwischen 2 DateTimePickern anzeigen
Das habe ich doch in den letzten Zeilen mit
Delphi-Quellcode:
gemacht.
AufgabenQuery.Close();
AufgabenQuery.SQL.Text := SQLBefehl; AufgabenQuery.Open() Oder etwa nicht ? |
AW: Nur Daten zwischen 2 DateTimePickern anzeigen
Okay hab den Fehler gefunden, ich musste
Delphi-Quellcode:
unter
AufgabenQuery.Parameters.ParamByName('mindatum').Value := DateTimePicker1.Date;
AufgabenQuery.Parameters.ParamByName('maxdatum').Value := DateTimePicker2.Date;
Delphi-Quellcode:
AufgabenQuery.SQL.Text := SQLBefehl;
einfügen. Somit läuft alles wie es soll, danke schön |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 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-2025 by Thomas Breitkreuz