Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Feststellen, ob in Firebird-DB bestimmte Tabelle existiert? (https://www.delphipraxis.net/59897-feststellen-ob-firebird-db-bestimmte-tabelle-existiert.html)

FBrust 30. Dez 2005 10:26

Datenbank: Firebird embedded • Version: 1.5 • Zugriff über: Zeos 6.5.1

Feststellen, ob in Firebird-DB bestimmte Tabelle existiert?
 
Hallo,

wie kann ich denn aus Delphi heraus feststellen, ob eine Tabelle in einer Firebird-DB bereits existiert?


Gruß
Frank

alex517 30. Dez 2005 10:33

Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
 
SQL-Code:
select *
from RDB$RELATIONS R
where R.RDB$RELATION_NAME = '...'
alex

FBrust 30. Dez 2005 15:51

Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
 
Hi,


funktioniert prima, danke :thumb:


Gruß und guten Rutsch

Frank

FBrust 4. Jan 2006 10:12

Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
 
Hi,

sorry, wenn ich dieses Thema nochmal hervorhole, aber mittlerweile erhalte ich beim Öffnen der Abfrage eine Fehlermeldung.

Die Abfrage lautet:

Delphi-Quellcode:
    with dmGeneral.qryTemp do begin
      Close;
      SQL.Clear;
      SQL.Text := 'SELECT * FROM RDB$RELATIONS R WHERE R.RDB$RELATION_NAME = ' +
                  QuotedStr(strTable);
      Open;
    end;
Die Fehlermeldung: "Cannot access blob record in column 13 with type Unknown".

In Spalte 13 beginnt das Wort "RDB$RELATIONS", allerdings erscheint die Meldung schon bei "SQL.Text := ", noch bevor dem Open-Befehl.

Die Verbindung zur Datenbank steht auch zu diesem Zeitpunkt.

Hat vielleicht jemand eine Idee?


Gruß
Frank

proitsystems 5. Jan 2006 11:06

Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
 
Hallo!

Kurzer Hinweis: du benötigst kein "SELECT *", den wenn ich richtig verstanden habe möchtest du ja nur wissen ob es die Tabelle gibt.

Versuche es doch mal mit einem "SELECT COUNT(*) FROM RDB$RELATIONS R WHERE R.RDB$RELATION_NAME =" [...].

Ausserdem würde ich dir empfehlen Parameter zu benutzen.

Wenn das Ergebnis grösser 0 ist, dann existiert die Tabelle oder die View (mit dieser SQL beschränkst du dich nicht nur auf Tabellen, sondern frägst auch ab ob eine VIEW mit diesem Namen existiert).

Warum tritt der Fehler auf? In Firebird gibt es verschiedene Arten von BLOBs. Ich weiß nicht welche Komponenten du verwendest, aber anscheinend können diese mit dieser Blob-Art in den Systemtabellen nicht umgehen.

Dürfte aber wie gesagt kein Problem sein, wenn du das obige "SELECT COUNT(*)..." verwendest, dann werden die Blob-Daten auch nicht zu dir übertragen.

Wenn du noch Fragen hast, einfach melden.


Grüsse aus Augsburg,

Marc Geldon
(PRO IT SYSTEMS >>> www.proitsystems.de)

FBrust 5. Jan 2006 15:04

Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
 
Hallo,

danke für Deinen Tipp, allerdings gibts da auch Probleme, denn bei

SQL-Code:
SELECT COUNT FROM RDB$RELATIONS R WHERE R.RDB$RELATION_NAME = 'TBLIPTEMP'
erhalte ich die Fehlermeldung "Unknown Token Line 1, Char 14 FROM", wenn ich es mit

SQL-Code:
SELECT COUNT * FROM RDB$RELATIONS R WHERE R.RDB$RELATION_NAME = 'TBLIPTEMP'
versuche,

wird der Stern angemosert.


Ich kann ja auch eine "von Hand" gepflegte Tabelle nehmen, aber das ist m. E. nur der zweitbeste Weg.



Gruß
Frank

PS: Die Komponenten sind übrigens die ZEOS-Komponenten.

Hansa 5. Jan 2006 15:07

Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
 
Was steht denn hier :

Zitat:

Zitat von proitsystems
Versuche es doch mal mit einem "SELECT COUNT(*)SELECT * FROM RDB$RELATIONS R WHERE R.RDB$RELATION_NAME =" [...].

Und wie sieht es um Deinen * rum aus ? :mrgreen:

FBrust 5. Jan 2006 15:09

Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
 
Hallo Hansa,

ja, da hab ich auch etwas länger gebraucht :gruebel: , aber ich hab letzendlich nur die beiden Statements ausprobiert die in meinem vorherigen Post stehen.


Gruß
Frank

Hansa 5. Jan 2006 15:19

Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
 
Wozu etwas länger gebraucht ? Zu sehen, daß es nicht COUNT * sondern COUNT (*) heißt ? :shock: Gehts jetzt oder nicht ?

FBrust 5. Jan 2006 15:24

Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
 
Hi,

ah ja, wer lesen kann, kommt im Leben weiter :wall: . Mit COUNT (*) funktionierts jetzt, danke für den Hinweis.



Gruß
Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 Uhr.
Seite 1 von 2  1 2      

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