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:

 

bancoPesByData.JPG

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:

 

LayoutPesByData.JPG

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:

 

banco1PesByData.JPG

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:

 

execPesByData.JPG

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.