Pesquisando informações que estejam entre as datas Informadas com Stored Procedure.

Neste artigo irei mostra um exemplo simples para cadastrar eventos e depois pesquisar os eventos que estejam entre as datas informadas pelo usuário.

Vamos criar um cadastro de eventos e após cadastrar vamos pesquisá-los por Data. Ok!

 

Crie um novo Web Site e adicione um banco de dados Sql Server express com o nome que desejar, no meu caso coloquei Agenda_DB.mdf.

Segue imagem:

 

1 - Figura 1

 

Vamos criar as Stored Procedure para adicionar um evento e para pesquisar entre as datas informadas pelo usuário. Adicione uma nova procedure com o nome agenda_AddEvento e digite o seguinte código.

 

CREATE PROCEDURE agenda_AddEvento

@titulo nvarchar(50),

@evento nvarchar(50),

@data datetime

AS

INSERT INTO TBAgenda (Titulo, Evento, Data) values (@titulo, @evento, @data)

RETURN

 

2 - Stored Procedure para Adicionar Evento

 

Adicione outra Stored Procedure para pesquisar os eventos entre as datas.

Segue o código:

 

CREATE PROCEDURE agenda_GetEvento

--Data Inicial para pesquisa

@dataIni datetime,

--Data Final para pesquisa

@dataFin datetime

AS

SELECT Titulo, Evento, Data FROM TBAgenda

--Condição para pesquisar entre as datas informadas

--e ordenar os resultados por data

WHERE (Data > @dataIni AND Data < @dataFin) ORDER BY Data

RETURN

3 - Stored Procedure para Pesquisar Evento

 

Agora vamos criar o Layout da aplicação:

Na página Default.aspx adicione dois Panels, um para salvar o evento e outro para fazer a pesquisa.

 

Segue o código do Panel para Adicionar o Evento.

 

<asp:Panel ID="pnlInserir" runat="server">

  <table>

    <tr>

<td>Título: </td>

<td>

 <asp:TextBox ID="txtTitulo" runat="server"></asp:TextBox>

 </td>

</tr>

<tr>

   <td>Evento: </td>

<td>

   <asp:TextBox ID="txtEvento" TextMode="MultiLine" runat="server" Height="73px" Width="214px"></asp:TextBox>

</td>

</tr>

<tr>

  <td>Data:</td>

<td>

  <asp:TextBox ID="txtData" runat="server"></asp:TextBox>

</td>

   </tr>

   <tr>

    <td align="right" colspan="2">

<asp:Button ID="btnSalvar" runat="server" Text="Salvar" OnClick="btnSalvar_Click" />

<asp:LinkButton ID="lnkPesquisar" runat="server" Text="Pesquisar" OnClick="lnkPesquisar_Click" />

</td>

   </tr>

</table>

</asp:Panel>

 

No Panel para fazer a pesquisa teremos apenas dois TextBox para informar as datas inicias para pesquisa e data final de pesquisa, o botão pesquisar e o botão voltar e um GridView para mostrar o resultado.

Segue código HTML:

 

<asp:Panel ID="pnlPesquisa" runat="server" Visible="false">

  <table>

    <tr>

  <td>Data Inicial: </td>

 <td>

 <asp:TextBox ID="txtData1" runat="server"></asp:TextBox>

</td>

<td>Data Final: </td>

 <td>

<asp:TextBox ID="txtData2" runat="server"></asp:TextBox>

</td>

   </tr>

    <tr>

<td colspan="4">

 <asp:Button ID="btnPesquisar" runat="server" Text="Pesquisar" OnClick="btnPesquisar_Click" />

<asp:Button ID="btnVoltar" runat="server" Text="Voltar" OnClick="btnVoltar_Click" />

</td>

</tr>

 </table>

<br />

 

<asp:GridView ID="grdEventos" runat="server" BackColor="White" BorderColor="#CCCCCC"

BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" GridLines="Horizontal">

<FooterStyle BackColor="#CCCC99" ForeColor="Black" />

<SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />

<PagerStyle BackColor="White" ForeColor="Black" HorizontalAlign="Right" />

<HeaderStyle BackColor="#333333" Font-Bold="True" ForeColor="White" />

</asp:GridView>

</asp:Panel>

 

O Layout da tela deve ficar como figura abaixo:

 

4 - Figura 2

 

Vamos ao código do botão Salvar evento.

 

protected void btnSalvar_Click(object sender, EventArgs e)

{

   // Recebendo os dados da tela

   string titulo = txtTitulo.Text;

   string evento = txtEvento.Text;

   DateTime data = Convert.ToDateTime(txtData.Text);

  

   // Cria a conexão e o comando

   SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectinString"].ConnectionString);

   SqlCommand cmmd = new SqlCommand("agenda_AddEvento", con);

   cmmd.CommandType = CommandType.StoredProcedure;

 

   // Adiciona os parâmetros da StoredProcedure

cmmd.Parameters.AddWithValue("@titulo", titulo);

cmmd.Parameters.AddWithValue("@evento", evento);

cmmd.Parameters.AddWithValue("@data", data);

 

   try

{

      // Abre a conexão e executa o comando.

con.Open();

cmmd.ExecuteNonQuery();

 

// Mostra mensagem na tela de Sucesso.

      Page.ClientScript.RegisterStartupScript(this.GetType(), "", "window.alert(Agendamento Incluído com Sucesso!);", true);

  

      // Limpa os TextBox

      txtTitulo.Text = String.Empty;

txtEvento.Text = String.Empty;

txtData.Text = String.Empty;

}

   catch (Exception ex)

{

      // Mostra mensagem na tela de Erro.

      Page.ClientScript.RegisterStartupScript(this.GetType(), "", "window.alert(" + ex.Message + ");", true);

}

   finally

{

      // Fecha a conexão

con.Close();

}

}

 

 

Vamos ao método do Link Pesquisar que irá esconder o Panel Inserir e mostrar o Panel Pesquisar:

 

protected void lnkPesquisar_Click(object sender, EventArgs e)

{

// Esconde o Panel de inserção e

      // Mostra o Panel de Pesquisa

pnlInserir.Visible = false;

pnlPesquisa.Visible = true;

}

 

Após o usuário informar a data inicial e a data final para pesquisa e clicar no botão pesquisar o sistema deverá mostrar no grid todos os eventos que irá se realizar entre as datas digitadas.

 

Segue o código do botão Pesquisar:

 

protected void btnPesquisar_Click(object sender, EventArgs e)

{

   // Recebe os dados da tela

   DateTime dataIni = Convert.ToDateTime(txtData1.Text);

   DateTime dataFin = Convert.ToDateTime(txtData2.Text);

 

   // Cria a conexão e o comando

   SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectinString"].ConnectionString);

   SqlCommand cmmd = new SqlCommand("agenda_GetEvento", con);

cmmd.CommandType = CommandType.StoredProcedure;

 

   // Adiciona os parâmetros da StoredProcedure

   cmmd.Parameters.AddWithValue("@dataIni", dataIni);

   cmmd.Parameters.AddWithValue("@dataFin", dataFin);

 

   // Cria o DataReader

   SqlDataReader dr;

   try

{

      // Abre a conexão e executa o comando.

con.Open();

dr = cmmd.ExecuteReader();

 

grdEventos.DataSource = dr;

grdEventos.DataBind();

 

}

   catch (Exception ex)

{

      // Mostra mensagem na tela de Erro.

      Page.ClientScript.RegisterStartupScript(this.GetType(), "", "window.alert(" + ex.Message + ");", true);

}

   finally

{

       // Fecha a conexão

con.Close();

}

}

 

Pronto agora só precisa digitar o método do botão voltar:

protected void btnVoltar_Click(object sender, EventArgs e)

{

   // Esconde o Panel de pesquisa e

   // Mostra o Panel de inserção

pnlInserir.Visible = true;

pnlPesquisa.Visible = false;

}

 

Para testar a aplicação inclua vários eventos e depois pesquise pelas datas e veja que o sistema só trará os eventos que estiverem entre as datas informadas.

 

No meu banco de dados tem os seguinte eventos:

 

4 - Figura 3

 

 

Veja que tem eventos do dia 18/06/2007 até 31/07/2007 agora eu vou pesquisar apenas os eventos que estejam entre as datas 19/06/2007 até 05/07/2007 e ele deverá me retornar três registros. Segue imagem em anexo:

 

5 - Figura 4

 

Veja que ele só trouxe os eventos entre as datas informadas.

 

Finalizando...

Vimos neste artigo um simples exemplo de como cadastrar eventos e pesquisar apenas os eventos que esteja entre as datas informadas, para isso utilizamos uma stored procedure que contém uma condição simples para fazer a comparação das datas e retorná-las ordenadas por Data.

 

Espero ter ajudado. Qualquer dúvida ou sugestões para melhoria do código estejam à vontade.

Contato: ebenezer05@gmail.com;

Abraços e até a próxima.

 

 

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados