
Para quem trabalha com o VBA do Access e gosta de manter seus códigos limpos, o uso de consultas previamente salvas e com passagem de parâmetros é muito útil.
Postaremos aqui, um exemplo de código que, após clicar no botão btnPesquisaAvancadaData, irá preencher um controle ListBox, utilizando um RecordSet será preenchido com o resultado de uma consulta salva dentro do Access e que tem dois parâmetros obrigatórios: A data de início da pesquisa (de) e data final da pesquisa (até).
No código abaixo:
- O btnPesquisaAvancadaData é o botão que vai executar o código ao ser clicado.
- O CurrentDb é o meu banco de dados atual do Access
- O "consRetornaDados" é a pesquisa/consulta salva, previamente, no Access
- O "[diaInicial]" é o primeiro parâmetro que a consulta exige para data inicial de pesquisa
- O comboDe é o ComboBox do formulário onde tem as datas de início de pesquisa
- O "[diaFinal]" é o segundo parâmetro que a consulta exige para data final de pesquisa
- O comboAte é o ComboBox do formulário onde tem as datas para o fim da pesquisa
- O lstPesquisaAvancada é o controle LisBox do formulário que vai receber o RecordSet com o resultado da consulta
VERSÃO TESTADA: Access 2013
Segue o código.
Private Sub btnPesquisaAvancadaData_Click()
Dim rs As DAO.Recordset
Dim qDEF As QueryDef
Set qDEF = CurrentDb.QueryDefs("consRetornaDados")
qDEF.Parameters("[diaInicial]").Value = comboDe.Value
qDEF.Parameters("[diaFinal]").Value = comboAte.Value
Set rs = qDEF.OpenRecordset
lstPesquisaAvancada.RowSourceType = "Table/Query" 'Obrigatório. Exigido pelo VBA.
Set lstPesquisaAvancada.Recordset = rs
End Sub
Dim rs As DAO.Recordset
Dim qDEF As QueryDef
Set qDEF = CurrentDb.QueryDefs("consRetornaDados")
qDEF.Parameters("[diaInicial]").Value = comboDe.Value
qDEF.Parameters("[diaFinal]").Value = comboAte.Value
Set rs = qDEF.OpenRecordset
lstPesquisaAvancada.RowSourceType = "Table/Query" 'Obrigatório. Exigido pelo VBA.
Set lstPesquisaAvancada.Recordset = rs
End Sub
Então é isso. Esperamos ter ajudado àqueles que buscam mais conhecimento na área.
Nenhum comentário:
Postar um comentário