none
Pesquisa datas entre intervalos, jogando o resultado num Datagrid RRS feed

  • Pergunta

  • Estou usando o seguinte comando:

     cn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=" & caminho & ""
                cn.Open()

                With Cmd
                    .CommandType = CommandType.Text
                    .CommandText = "SELECT Data, Autos, Oficio from Processo WHERE Data  BETWEEN #" + DateTimePicker1.Value.Date + "# And #" + DateTimePicker2.Value.Date + "#"
                    .Connection = cn
                End With

                With Da
                    .SelectCommand = Cmd
                    Dt = New DataTable
                    .Fill(Dt)
                    DataGridView2.DataSource = Dt

    não está funcionando, o resultado vem com datas que eu não escolho dos datetimepicker.

    OBS.: No BD eu coloquei o campo data como TEXTO,

    domingo, 7 de setembro de 2014 20:25

Respostas

  • No caso vc troca a data no componente, faz a consulta no banco com a nova data, só que não retorna nada?

    Esse código não está dentro de um loop né?

    Só pra teste, aproveita e coloca "Parameters.Clear()" antes de passar os novos parametros.

    Só não esquece de marcar como útil se resolver o teu caso.


    • Editado Eugenio Junior domingo, 7 de setembro de 2014 22:39
    • Marcado como Resposta -_NGR domingo, 7 de setembro de 2014 22:52
    domingo, 7 de setembro de 2014 22:39

Todas as Respostas

  • Por que data está como texto? O certo é como date ou datetime.

    Fora isso, tenta passar esses filtros por parametro:

    cmd.parameter.addWithValue("@datainicial", filtro1);

    cmd.parameter.addWithValue("@datafinal", filtro2);

    domingo, 7 de setembro de 2014 20:45
  • Consegui, muito obrigado.

    domingo, 7 de setembro de 2014 20:55
  • Eu fiz as alterações no banco de dados... (troquei para datetime)

    no entanto só funciona uma vez!

     Dim cn As New OleDb.OleDbConnection
            cn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=" & caminho & ""
            cn.Open()

            Dim dt1 As DateTime = DateTimePicker1.Value.Date
            Dim dt2 As DateTime = DateTimePicker2.Value.Date
            'MsgBox(dt1)
            Try

                MsgBox(dt1 + " " + dt2)
                With Cmd


                    .CommandType = CommandType.Text
                    .CommandText = "select Data, Autos, Oficio FROM Processo where Data between @datainicial AND @datafinal"
                    .Parameters.AddWithValue("@datainicial", dt1)
                    .Parameters.AddWithValue("@datafinal", dt2)
                    .Connection = cn
                End With

                With Da
                    .SelectCommand = Cmd
                    Dt = New DataTable
                    .Fill(Dt)
                    DataGridView2.DataSource = Dt
                End With

                cn.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

    Na primeira vez que clico no botão funciona, depois nada acontece...

    O que será?

    domingo, 7 de setembro de 2014 21:41
  • No caso vc troca a data no componente, faz a consulta no banco com a nova data, só que não retorna nada?

    Esse código não está dentro de um loop né?

    Só pra teste, aproveita e coloca "Parameters.Clear()" antes de passar os novos parametros.

    Só não esquece de marcar como útil se resolver o teu caso.


    • Editado Eugenio Junior domingo, 7 de setembro de 2014 22:39
    • Marcado como Resposta -_NGR domingo, 7 de setembro de 2014 22:52
    domingo, 7 de setembro de 2014 22:39
  • Funcionou perfeitamente!
    domingo, 7 de setembro de 2014 22:52