TABELA

GUIGOR 31/01/2013 22:57:34
#418540
Boa noite, gostaria de saber como eu posso fazer uma rotina para verificar se existe um tabela no banco, e depois verificar se existe todos os campos. Ou seja 1 - primeiro preciso saber se a tabela existe 2 - depois se os campos estão corretos
MARCELO.TREZE 01/02/2013 00:10:34
#418548
Qual o banco mesmo?
MARCELO.TREZE 01/02/2013 00:23:01
#418550
se for firebird

para verificar se tabela existe

SELECT COUNT(*) QTDE FROM RDB$RELATIONS WHERE RDB$FLAGS=1 and RDB$RELATION_NAME=[ô]NOME_TABELA[ô]


Lista os campos da tabela

SELECT * FROM RDB$RELATION_FIELDS WHERE RDB$RELATION_NAME = [ô]NomeDaTabela[ô] ORDER BY RDB$FIELD_POSITION
GUIGOR 01/02/2013 07:09:25
#418552
é sql server tb serve
MARCELO.TREZE 01/02/2013 09:55:35
#418561
pra SQLSERVER você pode fazer assim:

Private Sub ListarTabelasADO()
Dim Conn As New ADODB.Connection
Dim TablesSchema As ADODB.Recordset
Dim ColumnsSchema As ADODB.Recordset
Conn.Provider = [Ô]MSDASQL[Ô]
Conn.Open [Ô]DSN=...;Database=...;[Ô], [Ô]UID[Ô], [Ô]PWD[Ô]
Set TablesSchema = Conn.OpenSchema(adSchemaTables)
Do While Not TablesSchema.EOF
DoEvents
Set ColumnsSchema = Conn.OpenSchema(adSchemaColumns, _
Array(Empty, Empty, [Ô][Ô] & TablesSchema([Ô]TABLE_NAME[Ô])))
Do While Not ColumnsSchema.EOF
DoEvents
Debug.Print TablesSchema([Ô]TABLE_NAME[Ô]) & [Ô], [Ô] & _
ColumnsSchema([Ô]COLUMN_NAME[Ô])
ColumnsSchema.MoveNext
Loop
TablesSchema.MoveNext
Loop
End Sub

no exemplo acima todas as tabelas e campos serão listadas então basta comparar

você pode pegar esta parte do código

 Debug.Print TablesSchema([Ô]TABLE_NAME[Ô]) & [Ô], [Ô] & _
ColumnsSchema([Ô]COLUMN_NAME[Ô])


e colocar em uma array, list ou grid

Tópico encerrado , respostas não são mais permitidas