none
Pesquisar entre datas usando Stored Procedure RRS feed

  • Pergunta

  • Olá pessoal, ando com um problema, não consigo implementar a lógica na seguinte estrutura:

     Private Sub PreencheGrade()
            Try
                Dim dt As New DataTable
                Dim da As New SqlDataAdapter("Pr_Sel_Equipamento", cnnSql)
                da.SelectCommand.CommandType = CommandType.StoredProcedure
                'codigo
                If rbCodigo.Checked = True Then
                    strSql = "@codigo"
                    'Nº serie 
                ElseIf rbNumSerie.Checked = True Then
                    strSql = "@num_serie"
                    'Setor
                ElseIf rbSetor.Checked = True Then
                    strSql = "@setor"
                    'modelo do equipamento
                ElseIf rbModelo.Checked = True Then
                    strSql = "@modelo"
                End If
                da.SelectCommand.Parameters.Add(strSql, SqlDbType.NVarChar)
                da.SelectCommand.Parameters(strSql).Value = txtPesquisar.Text
                da.Fill(dt)
                Me.dgvPesquisa.DataSource = dt
                FormataGrade() 'formata o cabeçalho do datagridview
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

    desse modo consigo perfeitamente fazer a consulta usando como filtro um TextBox, porem tenho que implementar um filtro para

    pesquisar entre datas, usando o componente DateTimePicker, para fazer a pesquisa e estou usando Procedure e têm que passar dois parâmetros (@dat_ini, @dat_fin), só que não consegui achar algo que desse certo.

    desde já agradeço.

     
    domingo, 29 de março de 2015 22:31

Respostas

  • Opa, tudo bom FellipeA?

    Você está conseguindo fazer a chamada na procedure e obter o resultset de retorno, ou o problema é já na hora de chamar a procedure? 

    Notei que seu método não recebe parâmetros. De que forma seu método acessará as informações de data inicial e final? Se for o caso de sua procedure já estar esperando estes valores, você pode simplesmente passá-los ao método que faz a chamada da procedure e incluí-los como parâmetros da mesma forma como você fez com sua string strSql. Você vai precisar de dois campos onde possa ser informada a data, e designar o valor destes campos aos parâmetros correspondentes em formatos válidos de DateTime.

    Caso o problema seja só para aplicar a lógica de filtro por range de datas, eu recomendaria você fazer esse tratamento já no código da sua stored procedure, com os parametros que você indicou de data de inicio e data de fim. Se sua procedure foi feita em SQL server como eu acho que foi, você pode aplicar um bewteen na sua query com os parâmetros indicados, como no exemplo a seguir:

    SELECT [Campo1], [Campo2] 
      FROM [SuaTabela]
     WHERE [CampoDataRange] BETWEEN @dat_ini AND @dat_fin

    Espero ter ajudado, mas não tenho certeza se entendi o problema.

    Boa sorte e sucesso na carrera aí!

    quarta-feira, 1 de abril de 2015 18:47