locked
Consulta entre uma data e outra, mostrando os dados numa listbox RRS feed

  • 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:35
    Moderador

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.br
    quarta-feira, 30 de junho de 2010 19:36
    Moderador
  • 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.br
    quarta-feira, 30 de junho de 2010 20:34
    Moderador
  • 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.br
    quinta-feira, 1 de julho de 2010 12:49
    Moderador
  • 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.br
    quinta-feira, 1 de julho de 2010 20:21
    Moderador
  •   

    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:35
    Moderador
  • 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