TSQLQuery Table not found

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Privateer3000
Beiträge: 37
Registriert: Mo 14. Feb 2011, 14:22

TSQLQuery Table not found

Beitrag von Privateer3000 »

Hallöchen,
ich beginne grad ein Projekt mit FPC.
Zum Test habe ich eine Firebird Datenbank erstellt.
Als Komponenten habe ich IBConnection, TSQLQuery,TDAtasource und Transaction benutzt.
Der Connect scheint zu klappen denn es kommt keine Fehlermeldung.
Die FB Property bestätigt dass eine DB connected ist.
Wenn ich aber nun auf eine Tabelle zugreifen will
meldet sich ein Fehler Table not found.
In der DB sind mehrere Tabellen, ich habe auch mehrere probiert.
Immer dasselbe...
Warum findet er die Tabellen nicht?

Grüßle

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1629
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: TSQLQuery Table not found

Beitrag von corpsman »

Guten Morgen,

Ich mach eigentlich nur mir SQLLite3 rum, aber das Prinzip müsste ja das selbe sein.

Evtl. Schaust du dir mal mein SQLLite3 Sample an. Auf dem Letzten Stuttgarter Lazarus Treffen dieskutierten wir auch über TDatasource wir befanden eigentlich, dass es Einfacher ist die Querys selbst zu schreiben und die Daten von Hand aus zu werten ( vor allem ist man dann Flexibler ).

Ich erzeuge z.B. so ganze Gui-Elemente und entsprechende Rekursive Hierarchieen. Die Code Basis die ich hierbei verwende sieht in etwa so aus :

Code: Alles auswählen

Procedure Query(Query: String; DB: TSQLQuery); // Stellt eine Query in der DB, danach kann die DB ausgelesen werden.
Begin
  DB.Active := false;
  db.SQL.Clear;
  db.SQL.Text := Query;
  db.Open; // Wenn eine AV. Kommt könnte man die Hier abfangen (z.B. wenn die Query ungültig ist)
End;   
..
var f:TField;
  s:String;
Begin
  Query('select * from Tabelle;', sqlQuery1);
  f := sqlquery1.fieldbyname('Feldname');
  while not sqlquery1.eof do begin
    s := f.AsString();
..
    sqlquery1.next;
  end;
end;
--
Just try it

Privateer3000
Beiträge: 37
Registriert: Mo 14. Feb 2011, 14:22

Re: TSQLQuery Table not found

Beitrag von Privateer3000 »

Vielen Dank corpsman
das sieht interessant aus und ich erwäge
sowieso die query u.ä. dynamisch zu generieren.
Das löst aber die Problematik nicht die gerade besteht.
Denn kein Query findet die Tabelle nicht und ich
finde nicht heraus warum.
Denn gerade im Designer gesetzte Komponenten sollten doch funktionieren!
Oder benutze ich gar die falschen Komponenten?!

Grüße

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1629
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: TSQLQuery Table not found

Beitrag von corpsman »

Tja, dass übersteigt mein Wissen nun,

Ein Versuch wäre es wert, dass du hergehst und mein SQL Sample Lädst die "SQLite3Connection1" Komponente Rauswirfst und dafür deine Rein machst.

Nicht vergessen die "SQLite3Connection1" ist in SQLTransaction1.database hinterlegt.

Gruß

Corpsman
--
Just try it

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: TSQLQuery Table not found

Beitrag von Antrepolit »

@Privateer:
Deine Tabellen liegen ja im DBMS nicht lose rum. Du musst erst mal deinen Tablespace, quasi die "Database" angeben. Wenn ich mich nicht ganz irre, hat die Connection ein Database-Property. Ich weiß es aber nun nicht auswendig, und habe gerade kein Lazarus am Rechner. Aber ich habe das so in Erinnerung, denn bei Oracle-Datenbanken muss mann eben noch die "Database" angeben.
Grüße, Antrepolit

care only if your os is really burning

Privateer3000
Beiträge: 37
Registriert: Mo 14. Feb 2011, 14:22

Re: TSQLQuery Table not found

Beitrag von Privateer3000 »

Hallöchen
egal was ich versuche. Es bleibt dabei: Table unknown.
Ich muss irgendwas anderes übersehen haben.
An der connection wird ja offensichtlich nicht rumgenölt. Die steht.
Aber in der angegebenen DB kann keine Tabelle gefunden werden.

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: TSQLQuery Table not found

Beitrag von Hitman »

Ich glaube Firebird ist etwas eigen in der Groß/Kleinschreibung ....
Versuch 1: Exakt die Groß/Kleinschreibung wie du die Tabelle angelegt hast verwenden.
Versuch 2: Alles in Großbuchstaben.
Versuch 3: Alles in Kleinbuchstaben.

Wenn du nicht herumprobieren willst, könnte die Doku weiterhelfen ... aber ich schätze, die drei Varianten zu probieren geht schneller :D

Im Hinterkopf habe ich noch: Ohne Quoting muss alles in CAPS geschrieben werden, mit Quoting halt in der "original" Groß/Kleinschreibung. Das ist aber eine Weile her ...

Privateer3000
Beiträge: 37
Registriert: Mo 14. Feb 2011, 14:22

Re: TSQLQuery Table not found

Beitrag von Privateer3000 »

In der Tat muss das irgendwie zusammenhängen.
Dazu muss ich sagen dass die DB per IBEasy von einer mdb importiert wurde.
D.h. das da etwas schief gegangen sein muss.
Ich habe testhalber mit dem SQL Fenster des IBEasy eine
Tabelle abfragen lassen, siehe da: mit dem gleichen Ergebnis. Tabelle unbekannt!
Jetzt muss ich mir was einfallen lassen, die zu konvertierende DB ist nicht gerade klein
bildet aber die Grundlage für das Projekt was ursprünglich in Delphi geschrieben wurde.
Eine Konvertierung Delphi->Lazarus ist nicht möglich da viele Fremdkomponenten
verwendet wurde (falls jetzt der Vorschlag kommt).

mille gracie
Grüße

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: TSQLQuery Table not found

Beitrag von hde »

Ich arbeite z.Zt. nicht mit Firebird. weiß aber von früher, dass er es mit der Groß-/Kleinschreibung sehr genau nimmt und manchmal sehr "eigensinnig" ist und auch bei den selects einen eigenen "Dialekt" pflegt (der auch eingestellt werden muss). Und auch bei den Connects reicht die IP alleine nicht.
Außerdem nehme ich bei Lazarus ausschließlich die Zeos-Componenten statt SWL-DB

hde

Privateer3000
Beiträge: 37
Registriert: Mo 14. Feb 2011, 14:22

Re: TSQLQuery Table not found

Beitrag von Privateer3000 »

Danke hde
ich habe alles von Hand in die FB gepflegt, e voila
es funktioniert.
Das ist echt seltsam.
Seltsamer ist jedoch dass es mir bis jetzt nicht gelungen ist
ZEOS in Lazarus zu installieren. Trotz aller Vorschläge im Web die ich finden konnte,
bleibt ZEOS für mich verschlossen.
Ich habs auf einem 32 und 64bit System probiert. Naja

Grüße
und Danke!

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: TSQLQuery Table not found

Beitrag von Christian »

Wenn du mal fragen formulieren könntest könnte dir vllt jemand helfen aber solang du nichtmal sagst was schiefgeht kann dir auch niemand helfen
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: TSQLQuery Table not found

Beitrag von hde »

Privateer3000 hat geschrieben:Seltsamer ist jedoch dass es mir bis jetzt nicht gelungen ist
ZEOS in Lazarus zu installieren. Trotz aller Vorschläge im Web die ich finden konnte,
bleibt ZEOS für mich verschlossen.
Ich habs auf einem 32 und 64bit System probiert. Naja
Das ist wirklich seltsam. Ich hab heute auf einem weiteren Win7-64 Zeos installiert und vor Tagen unter 32bit = keinerlei Probleme.

hde

Privateer3000
Beiträge: 37
Registriert: Mo 14. Feb 2011, 14:22

Re: TSQLQuery Table not found

Beitrag von Privateer3000 »

In der Tat
beim Compilieren erhalte ich die Meldungen:

Code: Alles auswählen

C:\Users\Admin\lazarus\components\ZEOSDBO-6.6.5-stable\src\core\ZClasses.pas(84,22) Error: No matching implementation for interface method "IUnknown.QueryInterface(constref TGuid,out <Formal type>):LongInt; StdCall;" found
C:\Users\Admin\lazarus\components\ZEOSDBO-6.6.5-stable\src\core\ZClasses.pas(183,14) Warning: An inherited method is hidden by "TZAbstractObject.Equals(const IUnknown):Boolean;"
C:\Users\Admin\lazarus\components\ZEOSDBO-6.6.5-stable\src\core\ZClasses.pas(186,14) Warning: An inherited method is hidden by "TZAbstractObject.ToString:AnsiString;"
C:\Users\Admin\lazarus\components\ZEOSDBO-6.6.5-stable\src\core\ZClasses.pas(190,1) Fatal: There were 1 errors compiling module, stopping
Was ich bisher dazu gefunden habe, führte zu keinem Erfolg (Groß/Kleinschreibung etc.)

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: TSQLQuery Table not found

Beitrag von Hitman »

Privateer3000 hat geschrieben:In der Tat
beim Compilieren erhalte ich die Meldungen:

Code: Alles auswählen

C:\Users\Admin\lazarus\components\ZEOSDBO-6.6.5-stable\src\core\ZClasses.pas(84,22) Error: No matching implementation for interface method "IUnknown.QueryInterface(constref TGuid,out <Formal type>):LongInt; StdCall;" found
C:\Users\Admin\lazarus\components\ZEOSDBO-6.6.5-stable\src\core\ZClasses.pas(183,14) Warning: An inherited method is hidden by "TZAbstractObject.Equals(const IUnknown):Boolean;"
C:\Users\Admin\lazarus\components\ZEOSDBO-6.6.5-stable\src\core\ZClasses.pas(186,14) Warning: An inherited method is hidden by "TZAbstractObject.ToString:AnsiString;"
C:\Users\Admin\lazarus\components\ZEOSDBO-6.6.5-stable\src\core\ZClasses.pas(190,1) Fatal: There were 1 errors compiling module, stopping
Was ich bisher dazu gefunden habe, führte zu keinem Erfolg (Groß/Kleinschreibung etc.)
ZEOS 6.6.5?! Wo hast du denn das ausgegraben? Das ist 3,5 Jahre alt ...
Schau mal hier: http://www.lazarusforum.de/viewtopic.php?f=17&t=6324" onclick="window.open(this.href);return false;

Privateer3000
Beiträge: 37
Registriert: Mo 14. Feb 2011, 14:22

Re: TSQLQuery Table not found

Beitrag von Privateer3000 »

Ich habe 6.6.5. nur zusätzlich ausprobiert und noch im Verzeichnis liegen
un um die Fehlermeldung anzuzeigen hab ich halt das kompiliert.
Eigentlich wollte ich die 6.6.6. benutzen
7 ist ja noch im Beta.

Antworten