Array
(
)

Verificar se existe tabela Via Delphi

Fabiano Góes
   - 22 fev 2006

Gostaria de Verificar se existe uma determinada tabela(Banco Firebird)
via Delphi !

Preciso fazer o seguinte:

Se existe a Tabela (MinhaTabela) então : Drop Table MinhaTabela

isso via aplicativo Delphi.


se alguem puder me ajudar agradeça !!!!!


Marco Salles
   - 22 fev 2006

A maneira que eu conheço é usando o objeto global sesion.. Para acessar seus métodos tem que definir DBtables

Usamos então o método GetTableNames

Este método possui cinco parametros


Citação:
1)O Nome (Aliase) de um Banco de Dados.. Acho que o caminho não serve

2)Uma string de filtro

3) um valor booleano indicando se as extensoes da tabela serão incluidas -->> No caso de uma pesquisa muito importante

4)um valor booleano indicando se as tebelas de sistemas serao incluida na lista(apenas para bancos de dados SQL)

5)O Componente TstringList

seria mais ou menos assim:

#Código

function (NomeDoBanco,NomeDaTabela):boolean;
var
lista:TStringList;
begin
result:=False;
Lista:=TstringList.Create;
Session.GetTableNames (NomeDoBanco, ´´,
True, False,Lista);
if Lista.indexof(NomeDaTabela) > -1 then
result:=true;
end;



Paullsoftware
   - 22 fev 2006

Tente abrir a tabela dentro do bloco Try Except

#Código

Try
MinhaQuery.Close;
MinhaQuery.Sql:=´Select * From MinhaTabela´;
MinhaQuery.Open;
ShowMessage(´Tabela Existe´);
Except
//Caso contrario...
end;


senão abrir é pq não existe! :wink:


Andremuller
   - 22 fev 2006

além das outras respostas, também é possível consultar nas tabelas de sistema, opção que sempre adoto em diversos bancos.
No caso do firebird seria ver se a query abaixo retorna algum resultado:
#Código


select rdb$relation_name
from rdb$relations
where rdb$flags = 1
and rdb$view_blr is null
and rdb$relation_name = ´SUA TABELA´


a vantagem de utilizar as tabelas de sistema é que essas consultas podem ser utilizadas também em procedures e triggers