TABELA
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
Qual o banco mesmo?
se for firebird
para verificar se tabela existe
Lista os campos da tabela
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
é sql server tb serve
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
e colocar em uma array, list ou grid
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