![]() |
Re: SQL Abfrage - Datum zwischen X und Y
Ja aber nur, wenn das eingebene Format mit dem des Systems übereinstimmt.
|
Re: SQL Abfrage - Datum zwischen X und Y
ja, das Datumformat ist immer das selbe. Habe mich aber jetzt entschieden, wenn man nur ein Feld ausfüllt wird genau das Datum angezeigt was man eingegeben hat. Das klappt jetzt allerdings nur mit dem Feld DateBegin.. wie bekomme ich den jetzt da noch den Fall unter wenn er nur DateEnd eingibt ? o.O.
Delphi-Quellcode:
if DateBeginSucheEdit.text <> '' then
begin if DateEndSucheEdit.Text <> '' then begin SmartQuery1.SQL.Add('and datum >= :ANFANG and datum <= :ENDE'); SmartQuery1.ParamByName('ANFANG').Value := StrToDate(DateBeginSucheEdit.Text); SmartQuery1.ParamByName('ENDE').Value := StrToDate(DateEndSucheEdit.Text); end else begin SmartQuery1.SQL.Add('and datum = :ANFANG'); DateEndSucheEdit.Text := DateBeginSucheEdit.Text; SmartQuery1.ParamByName('ANFANG').Value := StrToDate(DateBeginSucheEdit.Text); end end; |
Re: SQL Abfrage - Datum zwischen X und Y
Ähm wie ist die Frage gemeint?
Delphi-Quellcode:
Wenn keine Eingabe in DateBeginSucheEdit dann keine Verarbeitung!
if DateBeginSucheEdit.text <> '' then
begin .... end; Pack vielleicht noch eine Messagebox in den else-Zweig "Bitte Anfangsdatum eingeben!" Gruß K-H |
Re: SQL Abfrage - Datum zwischen X und Y
Wenn DateBeginEdit nicht ausgefüllt ist aber DateEndEdit soll er nur nach dem Datum suchen was in DateEndEdit eingeben ist und dann gleichzeitig in DateBeginEdit das Datum von DateEndEdit eintragen umgekehrt geht es ja schon.
|
Re: SQL Abfrage - Datum zwischen X und Y
Mein Vorschlag wäre:
Delphi-Quellcode:
klappt aber nicht ^^
if DateBeginSucheEdit.text <> '' then
SmartQuery1.SQL.Add('and datum = :ANFANG'); DateEndSucheEdit.Text := DateBeginSucheEdit.Text; SmartQuery1.ParamByName('ANFANG').Value := StrToDate(DateBeginSucheEdit.Text); begin if DateEndSucheEdit.Text <> '' then begin SmartQuery1.SQL.Add('and datum >= :ANFANG and datum <= :ENDE'); SmartQuery1.ParamByName('ANFANG').Value := StrToDate(DateBeginSucheEdit.Text); SmartQuery1.ParamByName('ENDE').Value := StrToDate(DateEndSucheEdit.Text); end else begin SmartQuery1.SQL.Add('and datum = :ENDE'); DateBeginSucheEdit.Text := DateEndSucheEdit.Text; SmartQuery1.ParamByName('ENDE').Value := StrToDate(DateEndSucheEdit.Text); end end; |
Re: SQL Abfrage - Datum zwischen X und Y
Erstell Dir doch einmal ein Struktogramm oder einen PAP ;)
|
Re: SQL Abfrage - Datum zwischen X und Y
@DeddyH
ich weiß doch wie das Programm ablaufen soll da brauch ich keinen Programmablauf o.O. Datum von: (DateBeginSucheEdit) Datum bis: (DateEndSucheEdit) 1. Fall Eingabe von DateBeginSucheEdit; DateEndSucheEdit keine Eingabe => Zeigt alle Datensätze mit Datum von Eingabe DatebeginSucheEdit an, DateEndSucheEdit bekommt Caption von Eingabe DateBeginSucheEdit 2. Fall 2. Eingabe von DateEndSuchEdit; DateBeginSucheEdit keine Eingabe => Zeigt alle Datensätze mit Datum von Eingabe DatebeginSucheEdit an, DateBeginSucheEdit bekommt Caption von Eingabe DateEndSucheEdit 3. Fall 3. Eingabe von DateBeginSucheEdit und DateEndSucheEdit => Zeigt alle Datensätze an die zwischen DateBeginSuchEdit und DateEndSucheEdit stehen
Delphi-Quellcode:
if DateBeginSucheEdit.text <> '' then
begin if DateEndSucheEdit.Text <> '' then begin SmartQuery1.SQL.Add('and datum >= :ANFANG and datum <= :ENDE'); SmartQuery1.ParamByName('ANFANG').Value := StrToDate(DateBeginSucheEdit.Text); SmartQuery1.ParamByName('ENDE').Value := StrToDate(DateEndSucheEdit.Text); end else begin SmartQuery1.SQL.Add('and datum = :ANFANG'); DateEndSucheEdit.Text := DateBeginSucheEdit.Text; SmartQuery1.ParamByName('ANFANG').Value := StrToDate(DateBeginSucheEdit.Text); end end; SmartQuery1.open; end; Dieser Quellcode zeigt mir Fall 1. und 3. an.. ich weiß nur nicht wie ich den 2. Fall unterbekomme. |
Re: SQL Abfrage - Datum zwischen X und Y
Genau deshalb mein Vorschlag mit dem PAP.
Delphi-Quellcode:
if DateBeginSucheEdit.text <> '' then
begin if DateEndSucheEdit.Text <> '' then begin //... end else begin //... end end else begin if DateEndSucheEdit.Text <> '' then begin //... end else begin //... end end; |
Re: SQL Abfrage - Datum zwischen X und Y
Zitat:
Aber im Ernst: Du hast verschiedene Möglichkeiten daran zu gehen: a) Du machst die Verarbeitung von einer Eingabe abhängig b) Du machst die Verarbeitung von einem Inhalt abhängig ich vermute es geht Dir um b). Dann solltest Du zunächst die Inhalte überprüfen und so "hinbiegen" wie Du sie benötigst. Dann erst startest Du die Abfrage mit den Inhalten der Edit-Felder, bzw. den Inhalten die Du daraus generiert hast. Das könnte so aussehen:
Code:
Wenn Du die nicht gefülleten Felder mit Standard-Werten füllen willst, dann sieht das etwas anders aus, aber das Prinzip bleibt das gleiche.
wenn BeginSuche = leer dann BeginSuche=EndSuche // Suche nach einem Tag (EndSuche)
Wenn BeginSuche nicht leer und Wenn Endsuche nicht leer dann ... // Suche mit Anfang und Ende ansonsten Wenn BeginSuche nicht leer dann .... // Suche mit Anfang ohne Ende ansonsten Fehlerausgabe // Anfang und Ende sind leer Und der Vorschlag von Detlef ist in keinster Weise ehrenrührig. Es ist oft ungemein hilfreich wenn man den Überblick verloren hat sich einen PAP oder ähnliches zu erstellen, da sich dann oft die notwendige Distanz einstellt. Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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