Usuário com melhor resposta
Consulta entre uma data e outra, mostrando os dados numa listbox

Pergunta
-
Olá,
Estou tentando criar um form de pesquisa que tenha 2 campos (data iniical e data final) e quando os dados forem inseridos e clicar no botão a pesquisa sea exibida, por exemplo em uma listbox.
Na consulta utilizei o criterio Entre[Formularios]!FrmConsultaData]![txtDataIni]E[Formularios]!FrmConsultaData]![txtDataFim]
Até esse ponto tudo certo. Porém não sei como fazer isso ser impresso numa listbox. Pois quando abro o form (que esta com a origem dos dados, ligado a essa consulta) os parametros de pesquisa ja abrem automaticamente. E quero que o usuario digite os valores no campo.
obrigado
quarta-feira, 30 de junho de 2010 19:04
Respostas
-
Faltou um espaço entre QueryData e WHERE.
Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br- Marcado como Resposta Fabricio30 segunda-feira, 5 de julho de 2010 13:17
sábado, 3 de julho de 2010 03:35Moderador
Todas as Respostas
-
No procedimento de evento do Click do botão, coloque
Me.TuaListbox.Requery
para atualizar seu conteúdo.
Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.brquarta-feira, 30 de junho de 2010 19:36Moderador -
Luiz,
O problema é que se o formulario é aberto, ou qdo clico no botão com o procedimento que voce passou. Ao invez de ser pelos text box criados (para data inicial e final) o acces abre aquela caixinha para inserir os parametros. Gostari que a pesquisa fosse realizada sem isso. O usuario digita nos text box e os dados são exibidos na listbox. Mesmo assim obrigado mais uma vez.
quarta-feira, 30 de junho de 2010 20:08 -
Na query, use o seguinte critério:
BETWEEN Forms!TeuForm!txtDataIni AND Forms!TeuForm!txtDataFim
É mais ou menos como você fez, porém o seu está sem espaços e tem um colchete faltando no começo.
Há um outro jeito (que até prefiro) que é escrever a instrução toda em código. Você tira os dois critérios da consulta e no click do botão coloca:
Dim strSQL As String
strSQL = "SELECT * FROM TuaQuery " & _
"WHERE TeuCampoData>=#" & Format(Me.txtDataIni, "MM/dd/yyyy") & "# AND " & _
"TeuCampoData<=#" & Format(Me.txtDataFim, "MM/dd/yyyy") & "#"
Me.TuaListbox.RowSource = strSQL
Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.brquarta-feira, 30 de junho de 2010 20:34Moderador -
Luiz,
Eu testei a segunda opção. Porém quando clico no botão. A lsit box fica em branco, como se não houvesse encontrado nenhum valor. Verifiquei os dados e insiro conforme estão na tabela do bd.
Mas não sei o que pode ser. Mesmo assim mais um vez obrigado pela ajuda.
sds
quinta-feira, 1 de julho de 2010 12:38 -
Você deve pausar o código na linha Me.TuaListbox.RowSource = strSQL e ver qual o valor de strSQL para entender o que pode estar errado.
Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.brquinta-feira, 1 de julho de 2010 12:49Moderador -
Tentei de varias formas aqui mas não consegui. Não sei se o problema é o tipo de dados, pois na tab. a data é do tipo data/hora (abreviada). E no codigo, mesmo se eu, de proposito, deixar os nomes da query e campos com o nome errado o mesmo ocorre. Ele executa a função, mas não retorna valor. Se houvesse como anexar o bd aqui eu lhe enviaria para voce analisar.
De qualquer forma obrigado pela ajuda
quinta-feira, 1 de julho de 2010 18:27 -
Faça o que eu falei na mensagem anterior: coloque um ponto de interrupção na linha Me.TuaListbox.RowSource = strSQL e me diga qual o valor de strSQL.
Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.brquinta-feira, 1 de julho de 2010 20:21Moderador -
Luiz se entendi o que voce quis dizer. Coloquei o pto de interrupção na linha indicada (com o F9) e abri a janela de variaveis locais.
strsql : "SELECT * FROM QueryDataWHERE DataCriacao>=#01/01/2010# AND DataCriacao<=#06/01/2010#" : String
E esse é o codigo usado no evento
Private Sub Comando10_Click()
Dim strsql As String
strsql = "SELECT * FROM QueryData" & "WHERE DataCriacao>=#" & Format(Me.txtDataInicial, "MM/dd/yyyy") & "# AND " & "DataCriacao<=#" & Format(Me.txtDataFinal, "MM/dd/yyyy") & "#"
Me.Lista11.RowSource = strsql
End Sub
sexta-feira, 2 de julho de 2010 13:00 -
Faltou um espaço entre QueryData e WHERE.
Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br- Marcado como Resposta Fabricio30 segunda-feira, 5 de julho de 2010 13:17
sábado, 3 de julho de 2010 03:35Moderador -
Luiz,
Agora funcionou perfeitamente. Obrigado pela grande ajuda, além de ter resolvido meu problema. Me ajudou a aprender um pouco mais.
segunda-feira, 5 de julho de 2010 13:15