Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird Datenbank - Verbindungsaufnahme (https://www.delphipraxis.net/66239-firebird-datenbank-verbindungsaufnahme.html)

mkinzler 27. Mär 2006 12:36

Re: Firebird Datenbank - Verbindungsaufnahme
 
Poste mal die datenbankbeschreibung und die Abfrage.

toyoman 27. Mär 2006 14:52

Re: Firebird Datenbank - Verbindungsaufnahme
 
Zitat:

Zitat von mkinzler
Poste mal die datenbankbeschreibung und die Abfrage.

Es handelt sich um eine Datenbank der Softwareverteilung. Ich brauche den Zugriff immer nur LESEND.

Hier die Filterung welche den Fehler hervorruft:

Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
var
   strint:string;
   s: string;
begin
  query1.filtered:=false;
  if edit1.text<>'' then
  begin
     s:=chr(39);
     if checkbox1.checked=true then
     begin
       if checkbox2.checked=true then
       begin
          strint:=edit1.text;
          query1.filter:='oname = ' + s + strint +s;
          query1.filtered:=true;
       end else
       begin
          strint:=edit1.text;
          query1.filter:='oname like ' + s + strint +'%'+s;
          query1.filtered:=true;
       end;
     end else
     begin
          query1.filtered:=false;
     end;
  end;
end;
Der SQL String der SQLQuery siehst so aus:
SQL-Code:
SELECT COOBJECTS.ONAME, COPROPITEMS.PINAME, COOBJECTS.OINACTIVE, COPROPVALUES.PVNAME, COOBJECTS.OFULLNAME, COOBJECTS.OEMAIL, COOBJECTS.OCOSTCENTER, COOBJECTS.OTYPE AS Kurz
FROM ((COPROPDATA INNER JOIN COOBJECTS ON COPROPDATA.OID = COOBJECTS.OID) INNER JOIN COPROPITEMS ON COPROPDATA.PIID = COPROPITEMS.PIID) INNER JOIN COPROPVALUES ON COPROPDATA.PVID = COPROPVALUES.PVID
WHERE (((COPROPITEMS.PINAME)='Components.Last User') AND ((COOBJECTS.OINACTIVE)='0') AND ((COOBJECTS.OTYPE)='M')) OR (((COPROPITEMS.PINAME)='Components.System.Manufacturer') AND ((COOBJECTS.OINACTIVE)='0')) OR (((COPROPITEMS.PINAME)='Components.System.Computer Model') AND ((COOBJECTS.OINACTIVE)='0')) OR (((COPROPITEMS.PINAME)='Components.System.Motherboard.SerialNumber') AND ((COOBJECTS.OINACTIVE)='0')) OR (((COPROPITEMS.PINAME)='Components.System.Processor.MaxSpeed') AND ((COOBJECTS.OINACTIVE)='0')) OR (((COPROPITEMS.PINAME)='Components.Storage.Memory.Total') AND ((COOBJECTS.OINACTIVE)='0')) OR (((COPROPITEMS.PINAME)='Components.Harddisk.TotalSize') AND ((COOBJECTS.OINACTIVE)='0'))
ORDER BY COOBJECTS.ONAME;

mkinzler 27. Mär 2006 15:10

Re: Firebird Datenbank - Verbindungsaufnahme
 
Ist ja auch eine ganz einfache Abfrage. ;-)
Aber ohne die Berschreibung der Tabellen tue ich mich schwer:
Wieviele datensätze liefert die Grundabfrage? Grundsätzlich ist das clientseitige Filtern nicht optimal.Ich würde vorschlagen die Abfrage zu parametrisieren. Zerlege mal die Abfrage in Teilabfragen um zu sehen, wo der Fehler im Detail auftaucht.

toyoman 27. Mär 2006 15:37

Re: Firebird Datenbank - Verbindungsaufnahme
 
Zitat:

Zitat von mkinzler
Ist ja auch eine ganz einfache Abfrage. ;-)
Aber ohne die Berschreibung der Tabellen tue ich mich schwer:
Wieviele datensätze liefert die Grundabfrage? Grundsätzlich ist das clientseitige Filtern nicht optimal.Ich würde vorschlagen die Abfrage zu parametrisieren. Zerlege mal die Abfrage in Teilabfragen um zu sehen, wo der Fehler im Detail auftaucht.

ja sehr einfach ;)

Ok werdes mal versuchen mit einer vereinfachten Query.
Die Beschreibung der Tabellen zusammenzustellen ist schwierig. Sind so viele und ich habe da nur beschränkt Zugriff auf dieses Firebird Dingsbums. Ich hatte gehofft ich könnte das ganze normal wie eine SQL-Tabelle ansprechen. Bei mir auf dem PC ist ein ODBC Eintrag definiert welcher über den Firebird/Interbase Treiber auf den Server verbindet. Im Delphi mache ich dann eine Query über diese ODBC Verbindung.

mkinzler 27. Mär 2006 15:41

Re: Firebird Datenbank - Verbindungsaufnahme
 
Lad dir maldie Personalversion des IBExperts herunter. Dort kannst du einen Metadatenexport machen und auch Testweise Queries an die Datenbank schicken, um so zu evaluieren ob das Problem an der Verbindung (ODBC recht suboptimal), Delphi oder an der Datenbank/Abfrage liegt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:47 Uhr.
Seite 2 von 2     12   

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