Como listar as tabelas do meu banco Firebird

Delphi

22/09/2004

Caros amigos da lista

Um cliente me pediu para disponibilizar num formulario uma consulta, onde pudesse selecionar todas as tabelas do meu banco FIREBIRD.

Dependendo da tabela selecionada, mostraria os campos correspondentes e as opcoes de busca.

Algum amigo tem idéia de como posso fazer?

Grato


Rbfonseca

Rbfonseca

Curtidas 0

Melhor post

Afarias

Afarias

22/09/2004

para listar as tabelas::

select rdb$relation_name from rdb$relations
where rdb$system_flag = 0;


dai é só montar as consultas com a tabela selecionada.



T+


GOSTEI 2

Mais Respostas

Alvaro Vieira

Alvaro Vieira

22/09/2004

Creio que quando você escreve "todas as tabelas" não devem ser consideradas as do sistema, certo?
O comando correto para listar apenas as tabelas de usuário (sem as views por ex.) é o seguinte:

Select rdb$relation_name
from rdb$relations
where ((rdb$system_flag=0) or (rdb$system_flag is null)) and
(rdb$view_source is null)
order by rdb$relation_name

t+
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2004

para listar as tabelas:
SELECT rdb$relation_name
FROM rdb$relations
WHERE rdb$system_flag = 0 -- somente objetos de usuário
    and rdb$relation_type = 0 -- somente tabelas
tipos possíveis:
0 - tabelas
1 - views
2 - tabela externa
3 - tabela de monitoramento
4 - nível de conexão GTT
5 - nível de transação GTT

para listar os campos:
SELECT r.rdb$relation_name, rf.rdb$field_name, rf.rdb$field_position
FROM rdb$relations r
INNER JOIN rdb$relation_fields rf on rf.rdb$relation_name = r.rdb$relation_name
WHERE r.rdb$system_flag = 0 and r.rdb$relation_type = 0
    AND r.rdb$relation_name = 'tabela_da_qual_deseja_listar_os_campos'
ORDER BY rf.rdb$relation_name, rf.rdb$field_position


GOSTEI 0
Dirceu Morais

Dirceu Morais

22/09/2004

Amigos,

Qual o comando que eu utilizo para me dar a quantidade de:

Domains
Tables
Views
Procedures
Trigger
Generations

igual aparece no IBExpert.

As Tables parece ser mais fácil.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

22/09/2004

Domains
select * from rdb$fields where rdb$system_flag = 0 and not (rdb$field_name like 'RDB$%') -- somente objetos de usuário
select count(*) total from rdb$fields where rdb$system_flag = 0 and not (rdb$field_name like 'RDB$%') -- somente objetos de usuário


Tables
select * from rdb$relations where rdb$system_flag = 0 and rdb$relation_type = 0 -- somente objetos de usuário / somente tabelas
select count(*) total from rdb$relations where rdb$system_flag = 0 and rdb$relation_type = 0 -- somente objetos de usuário / somente tabelas


Views
select * from rdb$relations where rdb$system_flag = 0 and rdb$relation_type = 1 -- somente objetos de usuário / somente views
select count(*) total from rdb$relations where rdb$system_flag = 0 and rdb$relation_type = 1 -- somente objetos de usuário / somente views


Procedures
select * from rdb$procedures where rdb$system_flag = 0 -- somente objetos de usuário
select count(*) total from rdb$procedures where rdb$system_flag = 0 -- somente objetos de usuário


Triggers
select * from rdb$triggers where rdb$system_flag = 0 -- somente objetos de usuário
select count(*) total from rdb$triggers where rdb$system_flag = 0 -- somente objetos de usuário


Generators
select * from rdb$generators where rdb$system_flag = 0 -- somente objetos de usuário
select count(*) total from rdb$generators where rdb$system_flag = 0 -- somente objetos de usuário

GOSTEI 1
Dirceu Morais

Dirceu Morais

22/09/2004

Domains
select * from rdb$fields where rdb$system_flag = 0 and not (rdb$field_name like 'RDB$%') -- somente objetos de usuário
select count(*) total from rdb$fields where rdb$system_flag = 0 and not (rdb$field_name like 'RDB$%') -- somente objetos de usuário


Tables
select * from rdb$relations where rdb$system_flag = 0 and rdb$relation_type = 0 -- somente objetos de usuário / somente tabelas
select count(*) total from rdb$relations where rdb$system_flag = 0 and rdb$relation_type = 0 -- somente objetos de usuário / somente tabelas


Views
select * from rdb$relations where rdb$system_flag = 0 and rdb$relation_type = 1 -- somente objetos de usuário / somente views
select count(*) total from rdb$relations where rdb$system_flag = 0 and rdb$relation_type = 1 -- somente objetos de usuário / somente views


Procedures
select * from rdb$procedures where rdb$system_flag = 0 -- somente objetos de usuário
select count(*) total from rdb$procedures where rdb$system_flag = 0 -- somente objetos de usuário


Triggers
select * from rdb$triggers where rdb$system_flag = 0 -- somente objetos de usuário
select count(*) total from rdb$triggers where rdb$system_flag = 0 -- somente objetos de usuário


Generators
select * from rdb$generators where rdb$system_flag = 0 -- somente objetos de usuário
select count(*) total from rdb$generators where rdb$system_flag = 0 -- somente objetos de usuário




Isso, isso, valw
GOSTEI 0
POSTAR