 Visual 
Basic 6  - Uma rotina para preencher
controles de lista : combobox , listbox , etc...
Visual 
Basic 6  - Uma rotina para preencher
controles de lista : combobox , listbox , etc...
Ao utilizar DAO em seus projetos , uma tarefa que quase sempre você vai precisar fazer é carregar um controle lista : ComboBox , ListBox , etc..
É importante você ter sempre a mão uma rotina que faça este serviço , uma rotina que seja a mais genérica possível. Existem diversas maneiras de você fazer isto , eu vou mostrar nesta dica uma delas.
Nesta rotina você informa o nome do controle que deseja preencher , o nome da Tabela origem dos dados , o nome do campo da tabela que será usado na propriedade ItemData ( precisa ser um campo único) , o nome do campo que deseja exibir no controle .
O nome que darei a rotina será CarregaControle. A estrutura da sub-rotina é a seguinte:
CarregaControle(Controle As Object, Tabela, CodigoCampo, DescricaoCampo As String)
Nota: A propriedade ItemData define um número específico para cada item de um controle ListBox e ComboBox
| 'Preenche combobox e fill listbox
'como usar: CarregaControle NomeControle, "Nometabela", "CodigodoCampo","DescricaoCampo"
'
'CodigoCampo : é o identificador unico do campo . Ex: CodigoCliente
'DescricaoCampo : e o campo texto para exibir no controle. Ex: NomeCliente
'
Public Sub CarregaControle(Controle As Object, Tabela, CodigoCampo, DescricaoCampo As String)
On Error GoTo Erro
Dim rs As Recordset   'Declara um recorset
Dim sql As String       'Declara uma string para a consulta SQL
Controle.Clear
'limpa o controle
sql = ""
'limpa a string SQL
'Define a string SQL para selecionar os registros
sql = "SELECT " & CodigoCampo & ", " & DescricaoCampo & " FROM " & Tabela
'abre o recorddset com os dados retornados
Set rs = db.OpenRecordset(sql, dbOpenForwardOnly)
With rs
Do Until .EOF 'percorre o recordset ate o fim
  'inclui os itens correspondentes
  Controle.AddItem rs(DescricaoCampo)
  Controle.ItemData(Controle.NewIndex) = rs(CodigoCampo)
  .MoveNext
  Loop
  'fecha o recordset
  .Close
End With
Set rs = Nothing 'libera o recordset
Exit Sub
Erro: 'se houver erros faz o tratamento
If Err.Number <> 0 Then
  MsgBox ("Erro #: " & Str(Err.Number) & Err.Description)
  Exit Sub
End If
End Sub | 
Voce deve abrir o banco de dados e quando desejar preencher uma combobox e uma listbox basta invocar a rotina. No exemplo acima estou abrindo o banco de dados Teste.mdb e vou preencher os controles com os dados da tabela Pilotos . Iremos usar o campo CodigoPiloto para atribuir a propriedade ItemData e o campo NomePiloto para exibir no controles de lista.
O projeto exemplo usa uma combobox , uma listbox e um botão de comando.

O código do formulário abre o banco de dados e invoca a rotina duas vezes , uma para preencher a combo e a outra para preencher a listbox.
O código para fazer a chamada da função pode ser o seguinte:
Abaixo eu estou preenchendo uma combo - combo1 e uma listbox - list1. Usando conexão DAO.
CarregaControle Combo1, "Authors", "Au_ID", "Author"
| Private Sub 
    Command1_Click() Set db = DBEngine.OpenDatabase("c:\teste\Biblio.mdb") CarregaControle Combo1, "Authors", "Au_ID", "Author" CarregaControle List1, "Authors", "Au_ID", "Author" End Sub | 
Nota: Você deve declarar na seção General Declarations do seu formulário a variável objeto db:
Dim db As DAO.Database
Apenas lembrando que se você quiser pode usar uma conexão ADO , basta fazer os ajustes.
O código para abrir uma conexão ADO é :
Dim cnn As New ADODB.Connection
cnn.Open "Provider = Microsoft.Jet.OLEDB.3.51;Data Source = C:\teste\Biblio.mdb;"
Até a próxima.  
 
| Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? | 
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a 
Objetos com VB .NET
