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