Jump to content
Fórum Script Brasil
  • 0

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


Wakim
 Share

Question

É 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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 !

Edited by Danleonhart
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.8k
    • Total Posts
      648.8k
×
×
  • Create New...