Verificando a existência de uma tabela com ADO.
Já tocamos neste assunto no artigo : ADO - Obtendo informações sobre a fonte dos dados.
Vamos mostrar como verificar se uma tabela existe em uma base de dados access usando o método OpenSchema da ADO.
1- Inicie o VB e faça uma referência a Microsoft Activex Data Object 2.x ( 2.5 em diante)
2- Insira um botão de comando e duas caixas de texto - txtbd e txtabela - e duas labels. Veja layout abaixo:
3- Agora vamos definir as variáveis objeto Connection ( con ) e Recordset ( rs ) na seção general declaration :
Option Explicit Dim con As ADODB.Connection Dim rs As ADODB.Recordset |
4- No evento Click do botão de comando vamos fazer a conexão com o banco de dados informado em txtbd e usando o método OpenSchema verificar se a tabela informada em txtabela existe.
Private Sub Command1_Click() Set con = New ADODB.Connection con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & txtbd.Text Set rs = con.OpenSchema(adSchemaTables, Array(Empty, Empty, txtabela.Text, "TABLE")) If Not rs.EOF Then MsgBox " A tabela " & txtabela.Text & " foi encontrada em : " & txtbd.Text Else MsgBox " A tabela " & txtabela.Text & " Não foi encontrada em : " & txtbd.Text End If rs.Close con.Close End Sub |
A Sintaxe do método OpenSchema é a seguinte:
Set recordset = connection.OpenSchema (QueryType, Criteria, SchemaID)
O método retorna um recordset que contém a informação sobre o esquema solicitado. O recordset é de somente leitura e o cursor é do tipo Static.
Os parâmetros usados são:
QueryType - O tipo do schema a consultar.
Criteria - Um vetor com restrições para cada opção usada em QueryType
Para o nosso caso - Verificar a existência de uma tabela - temos:
QueryType |
Criteria |
adSchemaTables |
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE |
Onde temos a matriz ( array ) usando os criterios:
array( TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE)
array( empty , empty , txtabela.text , "TABLE" )
E, é só isto....