AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage - Datum zwischen X und Y
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage - Datum zwischen X und Y

Ein Thema von Major1337 · begonnen am 14. Sep 2009 · letzter Beitrag vom 17. Sep 2009
Antwort Antwort
Seite 4 von 4   « Erste     234   
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#31

Re: SQL Abfrage - Datum zwischen X und Y

  Alt 17. Sep 2009, 09:50
Ja aber nur, wenn das eingebene Format mit dem des Systems übereinstimmt.
Markus Kinzler
  Mit Zitat antworten Zitat
Major1337

Registriert seit: 26. Jul 2009
158 Beiträge
 
#32

Re: SQL Abfrage - Datum zwischen X und Y

  Alt 17. Sep 2009, 10:06
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;
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#33

Re: SQL Abfrage - Datum zwischen X und Y

  Alt 17. Sep 2009, 10:23
Ähm wie ist die Frage gemeint?
Delphi-Quellcode:
if DateBeginSucheEdit.text <> 'then
begin
  ....
end;
Wenn keine Eingabe in DateBeginSucheEdit dann keine Verarbeitung!
Pack vielleicht noch eine Messagebox in den else-Zweig "Bitte Anfangsdatum eingeben!"

Gruß
K-H
  Mit Zitat antworten Zitat
Major1337

Registriert seit: 26. Jul 2009
158 Beiträge
 
#34

Re: SQL Abfrage - Datum zwischen X und Y

  Alt 17. Sep 2009, 10:32
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.
  Mit Zitat antworten Zitat
Major1337

Registriert seit: 26. Jul 2009
158 Beiträge
 
#35

Re: SQL Abfrage - Datum zwischen X und Y

  Alt 17. Sep 2009, 10:43
Mein Vorschlag wäre:

Delphi-Quellcode:
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;
klappt aber nicht ^^
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#36

Re: SQL Abfrage - Datum zwischen X und Y

  Alt 17. Sep 2009, 10:58
Erstell Dir doch einmal ein Struktogramm oder einen PAP
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
Major1337

Registriert seit: 26. Jul 2009
158 Beiträge
 
#37

Re: SQL Abfrage - Datum zwischen X und Y

  Alt 17. Sep 2009, 11:31
@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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#38

Re: SQL Abfrage - Datum zwischen X und Y

  Alt 17. Sep 2009, 11:36
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;
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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#39

Re: SQL Abfrage - Datum zwischen X und Y

  Alt 17. Sep 2009, 14:14
Zitat von Major1337:
@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
Mir scheint das 1=2 , daher ist das Problem doch gelöst?

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 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
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.

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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 20:54 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