22/02/2006

Verificar se existe tabela Via Delphi

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 !!!!!


Fabiano Góes

Respostas

22/02/2006

Marco Salles

A maneira que eu conheço é usando o objeto global sesion.. Para acessar seus métodos tem que definir [b:2301d93920]DBtables [/b:2301d93920]

Usamos então o método GetTableNames

Este método possui cinco parametros

1)O Nome (Aliase) de um Banco de Dados.. [b:2301d93920]Acho que o caminho não serve[/b:2301d93920] 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:

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;



Responder Citar

22/02/2006

Paullsoftware

Tente abrir a tabela dentro do bloco Try Except

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:


Responder Citar

22/02/2006

Andremuller

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:
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


Responder Citar