AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL mit Union und Unterabfragen liefert falsches Ergebnis
Thema durchsuchen
Ansicht
Themen-Optionen

SQL mit Union und Unterabfragen liefert falsches Ergebnis

Ein Thema von nachtstreuner60 · begonnen am 26. Jan 2007 · letzter Beitrag vom 29. Jan 2007
Antwort Antwort
Seite 2 von 3     12 3      
mkinzler
(Moderator)

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

Re: SQL mit Union und Unterabfragen liefert falsches Ergebni

  Alt 28. Jan 2007, 11:30
Besser so:
Params.ParambyName('voDatum').Value := vonDatum.Date;
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: SQL mit Union und Unterabfragen liefert falsches Ergebni

  Alt 28. Jan 2007, 11:35
Hallo,

du könntest den Benutzer die Datum- und Zeitwerte über DateTimePicker einstellen lassen:

Delphi-Quellcode:
begin
  datSQL := '... and DATUM + ZEIT between :dtStart and dtEnd order by DATUM, ZEIT';
  // ...
  Params.ParambyName('dtStart').AsDateTime := dtpVonDatum.Date + dtpVonZeit.Time;
Freundliche Grüße
  Mit Zitat antworten Zitat
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#13

Re: SQL mit Union und Unterabfragen liefert falsches Ergebni

  Alt 28. Jan 2007, 11:43
...Ihr seit ja schnell,

also ich habs erstmal so probiert !

Delphi-Quellcode:
 datSQL := ' and DATUM + ZEIT between (:voDatvoZeit and :biDatbiZeit) order by DATUM Zeit';
       with dModul do begin
          ZQueryKanban.ParamByName('voDatbiZeit').AsString :=
            QuotedStr(Datetostr(vonDatum.Date)+ ' '+ edvonDATvonZEIT.Text);
          zQueryKanban.ParamByName('biDatbiZeit').AsString :=
            QuotedStr(DateToStr(bisDatum.date)+ ' '+ edBisDATbisZeit.Text);
       end;
:
:
: weiter unten dann dies
:
:
Delphi-Quellcode:
with dMODUL do begin
   zQueryKanban.SQL.Clear;
   zQueryKANBAN.SQL.Text := dSQL+datSQL;
   reditSQL.Clear;
   rEditSQL.Lines.Add(zQueryKANBAN.SQL.Text);
   showmessage(zqueryKANBAN.SQL.Text);
   zQueryKANBAN.Open;
end;

nun erhalte ich die Fehlermeldung, das
'Parameter : voDatbiZeit nicht gefunden'

die Daten werden von einem DateTimePicker (Datum) und Editfeld (Zeit) geliefert.
Siehe obigen Screenshot im Anhang

mit freundlichen Grüßen

[edit=Jelly] Delphi Tags angepasst, Mfg, Jelly[/edit]
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL mit Union und Unterabfragen liefert falsches Ergebni

  Alt 28. Jan 2007, 11:46
Die Parameter müßen nach dem QueryString gesetzt werden. Dann werden die Parameter automatisch erzeugt und können gesetzt werden.
BTW Verzichte besser auf den Umweg über den String.
Markus Kinzler
  Mit Zitat antworten Zitat
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#15

Re: SQL mit Union und Unterabfragen liefert falsches Ergebni

  Alt 28. Jan 2007, 11:56
Hallo mKinzler,

habs nun abgeändert, bekomme aber trotzdem die Fehlermeldung.

Delphi-Quellcode:
       datSQL := ' and DATUM + ZEIT between (:voDatvoZeit and :biDatbiZeit) order by DATUM Zeit';
// Zeige den SQL-BEFEHL

with dMODUL do begin
   zQueryKanban.SQL.Clear;
   zQueryKANBAN.SQL.Text := dSQL+datSQL;
   ZQueryKanban.ParamByName('voDatbiZeit').AsString :=
      QuotedStr(Datetostr(vonDatum.Date)+ ' '+ edvonDATvonZEIT.Text);
   zQueryKanban.ParamByName('biDatbiZeit').AsString :=
      QuotedStr(DateToStr(bisDatum.date)+ ' '+ edBisDATbisZeit.Text);


   reditSQL.Clear;
   rEditSQL.Lines.Add(zQueryKANBAN.SQL.Text);

   showmessage(zqueryKANBAN.SQL.Text);
   zQueryKANBAN.Open;
end;
Verzichte besser auf den Umweg über String ? Ich habe für die Eingabe ein DateTimePicker fürs Datum und ein Editfeld für die Zeitangabe(also String). Wie kann ich da auf den String verzichten ?

Gruß Nachtstreuner
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL mit Union und Unterabfragen liefert falsches Ergebni

  Alt 28. Jan 2007, 12:11
Delphi-Quellcode:
datSQL := ' and DATUM + ZEIT between :voDatvoZeit and :biDatbiZeit order by DATUM Zeit';
// Zeige den SQL-BEFEHL

with dMODUL do begin
   //zQueryKanban.SQL.Clear; ist Überflüssig
   zQueryKANBAN.SQL.Text := dSQL+datSQL;
   ZQueryKanban.ParamByName('voDatvoZeit').asDateTime := vonDatum.Date + StrToTime(edvonDATvonZEIT.Text);
   zQueryKanban.ParamByName('biDatbiZeit').AsDateTime := bisDatum.date + StrToTime(edBisDATbisZeit.Text);

   reditSQL.Clear;
   rEditSQL.Lines.Add(zQueryKANBAN.SQL.Text);

   showmessage(zqueryKANBAN.SQL.Text);
   zQueryKANBAN.Open;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#17

Re: SQL mit Union und Unterabfragen liefert falsches Ergebni

  Alt 28. Jan 2007, 12:38
Danke mKinzler,

funktioniert mit denParametern, allerdings mit einem Schönheitsfehler.

Folgende Params wurden übergeben :

siehe Anhang Abfr_erst

Die Datensätze im roten Rechteck siehe Bild Anhang (Abfrage.jpg) hätten nicht
angezeigt werden dürfen, da sie nach 15:45:00 Uhr liegen.


und hier noch mal der Prog.Code:

Delphi-Quellcode:
// ist vonDatumbisZeit und gefüllt, und bisDatum unterschiedlich zu von Datum
// und bisDatbisZeit gefüllt, dann
//*********** Zeitraum über mehrere Tage hinweg *******************************
if (length(trim(edvonDatvonZeit.Text)) = 8) and
   (length(trim(edVonDatbisZeit.Text)) <> 8) then begin
  if (length(trim(edbisDatbisZeit.Text)) = 8) and
     (length(trim(edBisDatvonZeit.Text)) <> 8) then begin

     datSQL := ' and DATUM + ZEIT between :voDatvoZeit and :biDatbiZeit order by DATUM, Zeit';

  end;
end;
// Zeige den SQL-BEFEHL

with dMODUL do begin
   //zQueryKanban.SQL.Clear;
   zQueryKANBAN.SQL.Text := dSQL+datSQL;
   ZQueryKanban.ParamByName('voDatvoZeit').asDateTime := vonDatum.Date + StrToTime(edvonDATvonZEIT.Text);
   zQueryKanban.ParamByName('biDatbiZeit').AsDateTime := bisDatum.Date + StrToTime(edBisDATbisZeit.Text);



   reditSQL.Clear;
   rEditSQL.Lines.Add(zQueryKANBAN.SQL.Text);

   //showmessage(zqueryKANBAN.SQL.Text);
   zQueryKANBAN.Open;
end;
fehlt in der Query irgendwo vielleicht eine Klammer ?

mfg
nachtstreuner
Miniaturansicht angehängter Grafiken
abfrage_125.jpg   abfr_erst_138.jpg  
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL mit Union und Unterabfragen liefert falsches Ergebni

  Alt 28. Jan 2007, 12:46
Wenn Datum und Zeit 2 Felder sind würde ich sie auch getrennt abfragen. Oder besser nur ein Feld in der Datenbank verwenden.
Markus Kinzler
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#19

Re: SQL mit Union und Unterabfragen liefert falsches Ergebni

  Alt 28. Jan 2007, 13:02
Hallo,

die Komponente TDateTimePicker enthält einen Implementierungsfehler: in den Eigenschaften .Date und .Time werden immer Datum- und Zeitanteil geliefert. Benötigst du nur das Datum, muß du den Nachkommaanteil mit Delphi-Referenz durchsuchenInt oder Delphi-Referenz durchsuchenTrunc abschneiden. Zum Isolieren des Zeitanteils kannst du die Funktion Delphi-Referenz durchsuchenFrac verwenden.

Gruß Hawkeye
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#20

Re: SQL mit Union und Unterabfragen liefert falsches Ergebni

  Alt 29. Jan 2007, 06:04
Hallo,

voDatbiZeit hast du im ParamByName stehen,
voDatvoZeit in der SQL-Abfrage.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 21:07 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