Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi überfordert ~.~ (https://www.delphipraxis.net/174189-ueberfordert-%7E-%7E.html)

Sir Rufo 9. Apr 2013 18:56

AW: überfordert ~.~
 
Zitat:

Zitat von Anfänger2013 (Beitrag 1210859)
die weiß ich nicht genau aus dem Kopf ...hab morgen aber wieder Unterricht und mach dir nen Screen.

Ein Screenshot muss es nicht sein, ein einfaches STRG-C im Meldungsfenster kopiert die gesamte Fehlermeldung in die Zwischenablage ;)

Anfänger2013 9. Apr 2013 19:44

AW: überfordert ~.~
 
oder so :D

Anfänger2013 10. Apr 2013 12:14

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.

DeddyH 10. Apr 2013 12:34

AW: überfordert ~.~
 
Noch besser geht es aber mit SQL-Parametern, frag mal Deinen Kumpel, dem hab ich das im Delphi-Treff bereits verklickert.

nahpets 10. Apr 2013 12:43

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.

Anfänger2013 14. Apr 2013 13:37

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:
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;
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?

LG Sergej

nahpets 14. Apr 2013 13:53

AW: überfordert ~.~
 
Zitat:

Zitat von Anfänger2013 (Beitrag 1211459)
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:
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;
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?

LG Sergej

Versuch es doch bitte mal mit
Delphi-Quellcode:
  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))');
mit
Delphi-Quellcode:
SQL.Text:='...'
weist Du der Abfrage immer neune Text zu.
Daruch hast Du mit jeder Anweisung die vorherige überschrieben, so dass am Ende Deine Abfrage so aussahl:
Delphi-Quellcode:
'((anfang < bu_anreise.Date) AND (ende < bu_abreise.Date)) AND ((bu_anreise.Date < ende) AND (bu_abreise.Date > anfang))'
und das ist kein vollständiges SQL.

Anfänger2013 14. Apr 2013 15:34

AW: überfordert ~.~
 
danke ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:21 Uhr.
Seite 3 von 3     123   

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