ABRIR BANCO E SABER QUAIS TABELA E CAMPOS EXITEM

LUCASCORREA 30/06/2004 16:30:35
#31734
Gostaria de fazer um sistema que quando eu abrir o banco de dados ele:
Em uma janela me de as tabelas que existem no banco
Em outra os campos da tabela que eu selecionar

Alguem pode me ajudar?

Obrigado
USUARIO.EXCLUIDOS 30/06/2004 16:50:46
#31742
Resposta escolhida
Usando ADO:

   Dim adoConexao As ADODB.Connection
Dim adoTabelas As ADODB.Recordset, adoCampos As ADODB.Recordset
Dim intContador As Integer

Set adoConexao = New ADODB.Connection
adoConexao.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source =" & App.Path & IIf(Right$(App.Path, 1) = "\", "", "\") & "Banco.mdb"

Set adoTabelas = adoConexao.OpenSchema(adSchemaTables)
Do Until adoTabelas.EOF
lstTabelas.AddItem adoTabelas(2)

adoCampos.Open "SELECT * FROM " & adoTabelas(2), adoConexao
For intContador = 0 To adoCampos.Fields.Count - 1
lstCampos.AddItem adoCampos(intContador).Name
Next

adoTabelas.MoveNext
Loop


Qualquer dúvida Post

Te +[S56]
USUARIO.EXCLUIDOS 30/06/2004 16:54:25
#31744
Obs.: Vai trazer todos os campos de Todas as Tabelas Junto no mesmo list.

Com pouca alteração vc pode mudar isso p/ o click do List da Tabela ou Trazer Nome da Tabela + Campo,
Aí vai da sua necessidade

Te +[S56]
USUARIO.EXCLUIDOS 01/07/2004 11:43:37
#31833
Tava faltando setar a variavel adoCampos, Mas eu testei e agora ta certo.
Eu fiz uma separação melhor das tabelas tb.
O campo 3 do adSchemaTables é o tipo de Tabela. Não tenho Consultas no meu BD, mas acho que deve ser VIEW.
Neste ex. só são listadas as TABLE (tabelas) que foram criadas pelo Usuário.

   Dim adoConexao As ADODB.Connection
Dim adoTabelas As ADODB.Recordset, adoCampos As ADODB.Recordset
Dim intContador As Integer

Set adoConexao = New ADODB.Connection
adoConexao.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source =" & App.Path & IIf(Right$(App.Path, 1) = "\", "", "\") & "Banco.mdb"

Set adoTabelas = adoConexao.OpenSchema(adSchemaTables)
Do Until adoTabelas.EOF

If adoTabelas(3) = "TABLE" Then
lstTabelas.AddItem adoTabelas(2)

Set adoCampos = New ADODB.Recordset
adoCampos.Open "SELECT * FROM " & adoTabelas(2), adoConexao
For intContador = 0 To adoCampos.Fields.Count - 1
lstTabelas.AddItem " - " & adoCampos(intContador).Name
Next
adoCampos.Close
End If
adoTabelas.MoveNext
Loop


Qualquer dúvida Post

Te+[S56]
Tópico encerrado , respostas não são mais permitidas