terça-feira, 30 de julho de 2019

Access - Retornar RecordSet com consulta salva no Access

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

Então é isso. Esperamos ter ajudado àqueles que buscam mais conhecimento na área.

Nenhum comentário:

Postar um comentário