AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Nur Daten zwischen 2 DateTimePickern anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Nur Daten zwischen 2 DateTimePickern anzeigen

Ein Thema von Luca Haas · begonnen am 17. Nov 2017 · letzter Beitrag vom 17. Nov 2017
Antwort Antwort
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Nur Daten zwischen 2 DateTimePickern anzeigen

  Alt 17. Nov 2017, 14:12
Datenbank: MSSQL • Version: ? • Zugriff über: TADO Query
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;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Nur Daten zwischen 2 DateTimePickern anzeigen

  Alt 17. Nov 2017, 14:18
Tu Dir selbst einen Gefallen und parametrisiere Deine Statements (Parameter werden direkt im SQL-String durch Doppelpunkt gekennzeichnet). Beispiel:
Delphi-Quellcode:
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;
Direkt im Editor getippt, deshalb ungetestet.

[edit] Bei TADOQuery heißt es dann DingsQuery.Parameters.ParamByName [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Nur Daten zwischen 2 DateTimePickern anzeigen

  Alt 17. Nov 2017, 14:28
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:
  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;
geändert. Allerdings bekomme ich noch die Fehlermeldung, dass die Parameter nicht gefunden werden
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Nur Daten zwischen 2 DateTimePickern anzeigen

  Alt 17. Nov 2017, 14:36
Du hast ja auch nur den SQL-Befehl zusammengebaut, ihn aber nicht der Query zugewiesen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Nur Daten zwischen 2 DateTimePickern anzeigen

  Alt 17. Nov 2017, 14:39
Das habe ich doch in den letzten Zeilen mit
Delphi-Quellcode:
  AufgabenQuery.Close();
  AufgabenQuery.SQL.Text := SQLBefehl;
  AufgabenQuery.Open()
gemacht.
Oder etwa nicht ?
  Mit Zitat antworten Zitat
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Nur Daten zwischen 2 DateTimePickern anzeigen

  Alt 17. Nov 2017, 14:47
Okay hab den Fehler gefunden, ich musste
Delphi-Quellcode:
  AufgabenQuery.Parameters.ParamByName('mindatum').Value := DateTimePicker1.Date;
  AufgabenQuery.Parameters.ParamByName('maxdatum').Value := DateTimePicker2.Date;
unter
AufgabenQuery.SQL.Text := SQLBefehl;
einfügen. Somit läuft alles wie es soll, danke schön
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:37 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