![]() |
Datenbankabfrage mit Paradox - doch nur Fehler...
Hallo Delphi-Datenbank-Freunde!!!
Ich habe wohl ein mächtiges Problem... Bei mir kommen die dubiosesten Fehler (Bsp.: EOIeError,Variante referenziert keinen Automatisierungstyp, ...). Dazu hab ich hier auch noch nichts gefunden. Aber naja, vielleicht liegt der Fehler einfach bei mir. Vielleicht könnt ihr mir jetzt mit einer Lösung helfen. Ich habe eine Paradox7-Tabelle ohne Alias: Buchungen {ID, Zimmer, Kunde, Anreise, Abreise,...} Zimmer ist ein Alpha-Wert, Kunde ist Integer und An- und Abreise sind Datum-Werte. Ich habe weiter in mein Formular ein TQuery (BuchungenQuery) eingebaut. Nun möchte ich gern aus der Tabelle abfragen, ob ein bestimmtes Zimmer an einem Bestimmten Tag frei ist...
Delphi-Quellcode:
Hier muss irgend wo schon der erste Fehler liegen.
with BuchungenQuery do
begin active := false; sql.clear; sql.add('SELECT COUNT(id) AS belegt FROM daten\buchungen.db WHERE Zimmer=:zimmernummer AND anreise<=:pdatum AND abreise>:pdatum'); ParamCheck := true; ParamByName ('pdatum').AsDate := datum; ParamByName ('zimmernummer').AsString := zimmerObj[i].zimNum; active := true; open; first; blgt := BuchungenQuery.FieldValues['belegt'].AsInteger; close; end; Danach soll, wenn das Zimmer frei ist, geschaut werden, wie lange es noch frei ist, bzw. für wann die nächste Buchung vorliegt. Wie gesagt, mein Delphi bombadiert mich mit undefinierbarenn Fehlermeldungen, selbst wenn ich einfach nur Test werte eingebe und ihne Parameter arbeite. Deshalb denke ich schon, das da was im Code nicht stimmt. Komischerweise haben aber schon abfregen über das Query funktioniert. Hab aber leider keine Ahnung, was ist soll ist. Deshalb würde ich mich auch freuen, wenn ihr mir einen neuen Ansatz bzw. Lösungsvorschlag geben könntet. Diese Paradox-SQL ist ja sehr abgespeckt. Doch ich weiss leider auch nicht, was alles zuläßig ist, und was nicht... Schon einmal Danke für euere hoffentlich umfangreiche Hilfe... |
Re: Datenbankabfrage mit Paradox - doch nur Fehler...
Zitat:
ich weis nicht ob jetzt DAS Problem ist, aber eigentlich sollte das so heißen:
Delphi-Quellcode:
with BuchungenQuery do
begin Close; //active := false; // Das kann man sich sparen sql.clear; sql.add('SELECT COUNT(id) AS belegt FROM daten\buchungen.db WHERE (Zimmer=:zimmernummer) AND (anreise<=:pdatum) AND (abreise>:pdatum)'); ParamCheck := true; ParamByName ('pdatum').AsDate := datum; ParamByName ('zimmernummer').AsString := zimmerObj[i].zimNum; //active := true; // kann man sich sparen. open; first; blgt := BuchungenQuery.FieldValues['belegt'].AsInteger; close; end; |
Re: Datenbankabfrage mit Paradox - doch nur Fehler...
Hallo Manuel!
Also, der Fehler kommt weiter, übrigens beim zweiten close! Tschüß |
Re: Datenbankabfrage mit Paradox - doch nur Fehler...
Hi,
was passiert wenn du das zweite Close weglässt? Kannst du mal ein paar von den Fehlermeldungen posten? Vielleicht wissen wir ja was darüber. |
Re: Datenbankabfrage mit Paradox - doch nur Fehler...
Hi,
schreib mal statt:
Delphi-Quellcode:
mal:
blgt := BuchungenQuery.FieldValues['belegt'].AsInteger;
Delphi-Quellcode:
[edit]
blgt := BuchungenQuery.FieldByName('belegt').AsInteger;
Bin mir jetzt nicht sicher, aber sollte es nicht so:
Delphi-Quellcode:
btw. so:
sql.add('SELECT COUNT(id) AS belegt FROM "daten\buchungen.db" WHERE Zimmer=:zimmernummer AND anreise<=:pdatum AND abreise>:pdatum');
Delphi-Quellcode:
Desweiten, warum machst du Count(id)? Sollte es nicht langen mit einem SELECT id FROM.... Ausserdem muss die SQL-Abfrage so heißen: SELECT id, Zimmer, anreise, abreise FROM .... Du musst glaub ich auch die Felder auswählen mit denen du den WHERE-Vergleich machst. Da hab ich sonst auch Fehlermeldungen bekommen. Werde das grad nochmal testen, nicht das ich was falschen sage :stupid:.
sql.add('SELECT COUNT(id) AS belegt FROM ' + QuotedStr('daten\buchungen.db') + ' WHERE (Zimmer=:zimmernummer) AND (anreise<=:pdatum) AND (abreise>:pdatum)');
[/edit] |
Re: Datenbankabfrage mit Paradox - doch nur Fehler...
Also, nochmal: Der Fehler Fehler tritt jetzt auf einmal, nach dem ich das Close weggelassen habe, bei der Belegung von blgt auf.
Er lautet: EOIeError: Variante referenziert kein Automatisierungsobjekt! |
Re: Datenbankabfrage mit Paradox - doch nur Fehler...
Jetzt tritt der Fehler erst wieder bei meiner zweiten Abfrage auf, die ich allerdings noch nicht bearbeitet habe...
Was mich iritiert ist, dass mir die Programierhilfedas FieldByName nicht anzeigt... Bevor ich die Zwiete Abfrege macht: Wie würdet ihr das in SQL formulieren? Mein Problem ist, dass beispielsweise in der Zukunft noch kein Termin vorliegt. So wird natürlich auch nichts gefunden. Delphi zeigt mir dann als Termin den 30.12.1899 an... Durch ne Schachtelung kann ich es ja auch nicht ausschliessen, da Paradox das nicht verarbeiten kann... |
Re: Datenbankabfrage mit Paradox - doch nur Fehler...
Zitat:
|
Re: Datenbankabfrage mit Paradox - doch nur Fehler...
Hi,
dass das die ProgrammierHilfe nicht anzeigt ist kein Fehler von dir. Das ist ein Bug in Delphi, der mit dem Update behoben werden sollte ;). Du könntest ja doch nachschauen ob was gefunden wurde. Ich mach das immer so:
Delphi-Quellcode:
If Query.RecordCount > 0 then
begin // Wenn etwas gefunden wurde end else begin // Wenn nichts gefunden wurde end; |
Re: Datenbankabfrage mit Paradox - doch nur Fehler...
Zitat:
Jupp, sorry. Hatte damals bei mir nen Fehler in meiner SQL-Abfrage. Deswegen dachte ich das es nur so geht. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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