![]() |
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 |
Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
SQL-Code:
alex
select *
from RDB$RELATIONS R where R.RDB$RELATION_NAME = '...' |
Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
Hi,
funktioniert prima, danke :thumb: Gruß und guten Rutsch Frank |
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:
Die Fehlermeldung: "Cannot access blob record in column 13 with type Unknown".
with dmGeneral.qryTemp do begin
Close; SQL.Clear; SQL.Text := 'SELECT * FROM RDB$RELATIONS R WHERE R.RDB$RELATION_NAME = ' + QuotedStr(strTable); Open; end; 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 |
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 >>> ![]() |
Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
Hallo,
danke für Deinen Tipp, allerdings gibts da auch Probleme, denn bei
SQL-Code:
erhalte ich die Fehlermeldung "Unknown Token Line 1, Char 14 FROM", wenn ich es mit
SELECT COUNT FROM RDB$RELATIONS R WHERE R.RDB$RELATION_NAME = 'TBLIPTEMP'
SQL-Code:
versuche,
SELECT COUNT * FROM RDB$RELATIONS R WHERE R.RDB$RELATION_NAME = 'TBLIPTEMP'
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. |
Re: Feststellen, ob in Firebird-DB bestimmte Tabelle existie
Was steht denn hier :
Zitat:
|
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 |
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 ?
|
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 08:00 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 by Thomas Breitkreuz