Criando uma Consulta com ADOX ?
Esta usando ADO e quer criar uma consulta no banco de dados ? Deixe a ADOX entrar em cena e o problema será resolvido...
Primeiro quero esclarecer que vamos criar uma consulta sem parâmetros , ou seja , uma consulta não parametrizada. Conforme o tipo de consulta a ADO classifica e agrupa as consultas conforme a seguinte tabela:
Objetos DAO | Objetos ADOX | |
TableDef | Tables | Tabelas do banco de dados |
QueryDef | Views | Consultas sem Parâmetros |
QueryDef | Procedures | Consultas com Parâmetros |
Depois , para verificar realmente que a consulta foi criada , vamos exibir todas as consultas usando o método OpenSchema da ADO. Como queremos exibir somente as consultas sem parâmetros temos definir o tipo de tabela que queremos exibir segundo a tabela abaixo:
Tipo de Tabela ( TABLE_TYPE) | Descrição |
ACCESS TABLE | Tabela do Access |
SYSTEM TABLE | Tabela do Sistema |
TABLE | Tabela |
VIEW | Consulta sem parâmetros |
LINK | Tabela vinculada |
PASS-THROUG | tabela vinculada via conexão ODBC |
Vamos usar o banco de dados Biblio.mdb ( eu renomei para Biblio_2001.mdb ) e criar consultas usando a tabela Publishers:
1- Inicie um novo projeto no VB e no formulário padrão insira os controles conforme a figura abaixo:
2- Referencie as bibliotecas - ADO e ADOX.
3-) Inclua o código abaixo no evento click do botão de comando - Criar Consulta ( command1 ) :
Private Sub command1_click() Dim cat As New ADOX.Catalog Dim cmd As New ADODB.Command On Error GoTo trata_erro 'abre o catalogo cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" & Text1.Text 'agora vamos criar a consulta cmd.CommandText = " Select * from Publishers" cat.Views.Append Text2.Text, cmd MsgBox " Consulta << " & Text2.Text & " >> Criada com sucesso !" Set cat = Nothing Exit Sub trata_erro: MsgBox Err.Description, vbCritical, "Consulta já existe..." End Sub |
Usando ADOX criamos uma consulta não parametrizada e a incluímos na coleção VIEWS do objeto Catalog ( Cat )
4- Para exibir as consultas presentes no banco de dados e verificar se a nossa consulta realmente esta lá , usamos o seguinte código no evento Click do botão - Ver Consulta - (command2 ):
Private Sub Command2_Click() Dim conn As New ADODB.Connection Dim rst As ADODB.Recordset conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" & Text1.Text Set rst = conn.OpenSchema(adSchemaTables) List1.Clear While Not rst.EOF If rst.Fields("TABLE_TYPE") = "VIEW" Then List1.AddItem rst.Fields("TABLE_NAME") End If rst.MoveNext Wend End Sub |
Aqui , usando o método OpenSchema , exibimos todas as tabela/consultas do tipo igual a VIEW .
É só...