![]() |
AW: überfordert ~.~
Zitat:
|
AW: überfordert ~.~
oder so :D
|
AW: überfordert ~.~
---------------------------
Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Hotelbuchungsprogramm.exe ist eine Exception der Klasse EOleException aufgetreten. Meldung: 'Syntaxfehler in Datum in Abfrageausdruck 'Buchung.Anreise>= #09.04.2013# AND Buchung.Abreise<= #10.04.2013#''. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen. --------------------------- OK Hilfe --------------------------- Das ist die Fehlermeldung, die man bekommt, wenn man bei Delphi 6 das Datum nicht zerlegt und man braucht anscheinend keine Rauten beim Datum ...geht auch ohne. |
AW: überfordert ~.~
Noch besser geht es aber mit SQL-Parametern, frag mal Deinen Kumpel, dem hab ich das im Delphi-Treff bereits verklickert.
|
AW: überfordert ~.~
Hallo,
Buchung.Anreise ist in der Datenbank vom Type Timestamp. Den kann man unmöglich mit einem derartigen Konstrukt #09.04.2013# vergleichen. Der Vergleich muss mit korrekter SQL-Syntax erfolgen, die Raute gehört nicht dazu. Der Vergleich mit '09.04.2013' könnte funktionieren, wenn denn die Datenbank in der Lage ist aus dem Timestamp eine Zeichenfolge zu machen oder erkennt, dass die Zeichenfolge ein Datum ist. Aber das sit suboptimal. Weiter oben hatte ich was von Parametern (mit Beispiel) geschrieben, versuch es doch bitte damit (DeddyH weist nicht umsonst darauf hin) und bitte den Lehrer euch ein paar Grundlagen zu SQL zu vermitteln. |
AW: überfordert ~.~
Hallo, ich bins wieder :)
1. danke nochmal für die posts ...hab einiges umgesetzt und erweitert und es hat funktioniert :) 2. ich hab ne kurze frage
Delphi-Quellcode:
ich möchte für die 3 möglichen fälle das datum der belegung und eingabe prüfen ...wie kann ich den quelltext oben umschreiben, dass er richtig ist und ich keine fehlermeldung ( Unions-Abfrage) erhalte?
begin
ende := ADOQuery_Buchen.FieldByName('Abreise').AsDateTime; anfang:= ADOQuery_Buchen.FieldByName('Anreise').AsDateTime; with ADOQuery_Buchen4 do begin Close; SQL.Text:='SELECT * FROM Zimmer '; SQL.Text:='WHERE' ; SQL.Text:='((bu_anreise.Date < anfang) AND (bu_abreise.Date < ende)) AND ((bu_anreise.Date < ende) AND (bu_abreise.Date > anfang)) ' ; SQL.Text:='((anfang < bu_anreise.Date) AND (bu_abreise.Date < ende)) AND ((bu_anreise.Date < ende) AND (bu_abreise.Date > anfang)) ' ; SQL.Text:='((anfang < bu_anreise.Date) AND (ende < bu_abreise.Date)) AND ((bu_anreise.Date < ende) AND (bu_abreise.Date > anfang))' ; Open; end; LG Sergej |
AW: überfordert ~.~
Zitat:
Delphi-Quellcode:
mit
SQL.Clear;
SQL.Add('SELECT * FROM Zimmer WHERE'); SQL.Add(' ((bu_anreise.Date < anfang) AND (bu_abreise.Date < ende))'); SQL.Add('and ((bu_anreise.Date < ende) AND (bu_abreise.Date > anfang))'); SQL.Add('and ((anfang < bu_anreise.Date) AND (bu_abreise.Date < ende))'); SQL.Add('and ((bu_anreise.Date < ende) AND (bu_abreise.Date > anfang))'); SQL.Add('and ((anfang < bu_anreise.Date) AND (ende < bu_abreise.Date))'); SQL.Add('and ((bu_anreise.Date < ende) AND (bu_abreise.Date > anfang))');
Delphi-Quellcode:
weist Du der Abfrage immer neune Text zu.
SQL.Text:='...'
Daruch hast Du mit jeder Anweisung die vorherige überschrieben, so dass am Ende Deine Abfrage so aussahl:
Delphi-Quellcode:
und das ist kein vollständiges SQL.
'((anfang < bu_anreise.Date) AND (ende < bu_abreise.Date)) AND ((bu_anreise.Date < ende) AND (bu_abreise.Date > anfang))'
|
AW: überfordert ~.~
danke ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:21 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