Ir para conteúdo
Fórum Script Brasil
  • 0

Carregar informações em combobox a partir de um banco de dados


Wakim

Pergunta

É o seguinte pessoal, tenho um formulário com vários combobox que devem ser preenchidos com dados de outras tabelas. No primeiro eu consigo puxar os dados nos demais não estou conseguindo. Estou usando Access 2007 e ADO. Estou usando a seguinte programação:

Dim Banco As String

Dim Conexao As ADODB.Connection

Dim Dados As ADODB.Recordset

Dim Autores As ADODB.Recordset

Set Conexao = New ADODB.Connection

Conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=bd.mdb;Persist Security Info=False"

Set Dados = Conexao.Execute("SELECT * FROM Revista")

cmbrevista.Clear

Do While Not Dados.EOF

Debug.Print Dados("Revista")

cmbrevista.AddItem (Dados("Revista"))

Dados.MoveNext

Loop

Dados.Close

Conexao.Close

Set Conexao = Nothing

Preciso preencher 5 combobox com dados de uma tabela (Autores) e não estou conseguindo. Lembrando que são no mesmo formulário. Se puderem me ajudar agradeço.

Abraços.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Wakim...

Usa a tag CODE que facilita a leitura do seu código... :mellow:

O que vejo em seu script é que você fecha e destrói a variável de conexão...

Conexao.Close
Set Conexao = Nothing
Sem conexão como pode ser feito a busca no BD ?! E também você não está informando o nome do Campo do BD que quer carregar...veja que você colocou "Revista" sendo o nome da Tabela, e repetiu como sendo o nome da Coluna também:
Set Dados = Conexao.Execute("SELECT * FROM Revista")  ' Nome da Tabela
...
Debug.Print Dados("Revista")                  ' Nome do Campo que deseja pegar os dados
cmbrevista.AddItem (Dados("Revista"))   ' Nome do Campo que deseja pegar os dados
Corrigindo um pouco seu código, eu faria assim:
Dim Banco    As String
 Dim Conexao  As ADODB.Connection
 Dim Dados    As ADODB.Recordset
 Dim Autores  As ADODB.Recordset
 Dim tmpVal

   Set Conexao = New ADODB.Connection
   Conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=bd.mdb;Persist Security Info=False"
   
     Set Dados = Conexao.Execute("SELECT * FROM Revista")
     cmbrevista.Clear
        
        Do While Not Dados.EOF
           tmpVal = Dados("Nome_do_Campo")   ' Informe o nome do Campo que deseja pegar os dados.
              Debug.Print tmpVal
              cmbrevista.AddItem tmpVal
              Dados.MoveNext
        Loop
Veja que aloquei momentaneamente o valor do campo em uma variável, pois sempre dá erro quando tento usar o mesmo valor de retorno de um campo mais de uma vez na rotina. Lembre-se que se quiser carregar valores de outro campo em outra ComboBox, basta seguir o mesmo conceito, mudando apenas o nome do campo. Um ponto de observação é que se você quer apenas o campo "Nomes" (por exemplo), não há necessidade de fazer um "SELECT" pegando tudo do banco de dados...pode simplesmente pegar apenas aquele determinado campo, assim:
Set Dados = Conexao.Execute("SELECT Nomes FROM Revista")
Isso agiliza o processamento de dados. Se você quiser que a ComboBox fique com o primeiro valor já selecionado, basta colocar este script após o "Loop":
cmbrevista.ListIndex = 0

Curiosidades:

* Se você está usando o Access 2007, como o formato de seu Banco de Dados é ".mdb" ???

O formato de BD's Access 2007/2010 é ".accdb".

* E o provedor não é : "Provider=Microsoft.Jet.OLEDB.4.0"

e sim o: "Provider=Microsoft.ACE.OLEDB.12.0"

Mas tenta a sorte aê !

se não funcionar avisar...e se funcionar também ! :D

VALEU !

Editado por Danleonhart
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...