Array
(
)

como listar todas tabelas de um banco de dados SQL SERVER?

Balceiro
   - 12 ago 2004

Olá,

estou desenvolvendo uma aplicação onde em determinado momento tenho que listar todas as tabelas de meu banco de dados SQL SERVER e depois listar todos os campos da tabela selecionada. O problema é que eu não tenho a minima idéia de como fazer isso.

aguardo uma ajuda.


balceiro


Nilsonalvernaz
   - 12 ago 2004

não entendi, vc quer pesquisar somente? pode usar sp_help no query analyzer


Paullus
   - 12 ago 2004

Como você está fazendo a conexão com o banco? ADO, BDE, ODBC,...

Se for por ADO o código abaixo resolve:

#Código

TADOConnection.GetTableNames(Tabelas);


Onde Tabelas é um objeto do tipo TStrings.

Ele retorna um lista com o nome de todas as tabelas do sistema. Para pegar os campos use o código abaixo:

#Código
Query.Active := false;
Query.SQL.Clear;
Query.SQL.Add(´SELECT *´);
Query.SQL.Add(´FROM ´ + Tabelas.Strings[i]);
Query.Active := true;

for j := 0 to (Query.Fields.Count - 1) do
ShowMessage(Query.Fields.Fields[i].FieldName);


Se precisar que eu seja mais claro é só falar. 8)


Paullus
   - 12 ago 2004


Citação:
for j := 0 to (Query.Fields.Count - 1) do
ShowMessage(Query.Fields.Fields[i].FieldName);


Eu errei na hora de digitar este último trecho de código leia-se assim
#Código

for j := 0 to (Query.Fields.Count - 1) do
ShowMessage(Query.Fields.Fields[j].FieldName);


ShowMessage(Query.Fields.Fields[j].FieldName);
Errei aí em cima.


Tg_luciano
   - 12 ago 2004

Bom não sei se vai funcionar em SQL SERVER....
Mas no firebird... eu faço assim

pegar os nomes das tabelas criadas.

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

pegar todos fields da tabela

select
r.rdb$field_name as CAMPO
from rdb$relation_fields r
where (r.rdb$relation_name=:Tabela)


Balceiro
   - 12 ago 2004

gente beleza...


já resolvi o problema...

estou usando o DBEXPRESS para conectar.

usei o seguinte código dentro da mminha TSQLQUERY: ´EXEC sp_tables´

isso já me retounou todas as tabelas do MSSQL SERVER.

de qualquer forma muito obrigado a todos que se prontificaram a me ajudar.