AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankabfrage mit Paradox - doch nur Fehler...
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankabfrage mit Paradox - doch nur Fehler...

Ein Thema von stoermi · begonnen am 17. Dez 2004 · letzter Beitrag vom 17. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#1

Datenbankabfrage mit Paradox - doch nur Fehler...

  Alt 17. Dez 2004, 15:10
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:
    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;
Hier muss irgend wo schon der erste Fehler liegen.
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...
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Datenbankabfrage mit Paradox - doch nur Fehler...

  Alt 17. Dez 2004, 15:13
Zitat von stoermi:
Delphi-Quellcode:
    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;
Hi,

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;
  Mit Zitat antworten Zitat
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Datenbankabfrage mit Paradox - doch nur Fehler...

  Alt 17. Dez 2004, 15:22
Hallo Manuel!

Also, der Fehler kommt weiter, übrigens beim zweiten close!

Tschüß
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Datenbankabfrage mit Paradox - doch nur Fehler...

  Alt 17. Dez 2004, 15:24
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.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Datenbankabfrage mit Paradox - doch nur Fehler...

  Alt 17. Dez 2004, 15:28
Hi,


schreib mal statt:

blgt := BuchungenQuery.FieldValues['belegt'].AsInteger; mal:

blgt := BuchungenQuery.FieldByName('belegt').AsInteger; [edit]

Bin mir jetzt nicht sicher, aber sollte es nicht so:

sql.add('SELECT COUNT(id) AS belegt FROM "daten\buchungen.db" WHERE Zimmer=:zimmernummer AND anreise<=:pdatum AND abreise>:pdatum'); btw. so:

sql.add('SELECT COUNT(id) AS belegt FROM ' + QuotedStr('daten\buchungen.db') + ' WHERE (Zimmer=:zimmernummer) AND (anreise<=:pdatum) AND (abreise>:pdatum)'); 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 .

[/edit]
  Mit Zitat antworten Zitat
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Datenbankabfrage mit Paradox - doch nur Fehler...

  Alt 17. Dez 2004, 15:29
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!
  Mit Zitat antworten Zitat
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Datenbankabfrage mit Paradox - doch nur Fehler...

  Alt 17. Dez 2004, 15:35
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...
  Mit Zitat antworten Zitat
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Datenbankabfrage mit Paradox - doch nur Fehler...

  Alt 17. Dez 2004, 15:39
Zitat von Spider:
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:.
Also bei mySQL muss im SELECT eigentlich nur auch das drin stehen, nach dem sortiert wird: ORDER BY!!!
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Datenbankabfrage mit Paradox - doch nur Fehler...

  Alt 17. Dez 2004, 15:39
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;
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Datenbankabfrage mit Paradox - doch nur Fehler...

  Alt 17. Dez 2004, 15:42
Zitat von stoermi:
Zitat von Spider:
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 .
Also bei mySQL muss im SELECT eigentlich nur auch das drin stehen, nach dem sortiert wird: ORDER BY!!!

Jupp, sorry. Hatte damals bei mir nen Fehler in meiner SQL-Abfrage. Deswegen dachte ich das es nur so geht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:40 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