LAYERDEV

 Busca Online:

 
Seja bem vindo(a) Visitante, você não está logado deseja logar
no portal para participar de serviços e promoções ? clique aqui.


No caso de perder a senha, acesse aqui e receba por e-mail.
Deseja entrar em contato conosco, acesse aqui e mande-nos um e-mail.

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

por Ebenézer de Souza em 15/6/2007

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.

voltar   comente  subir

Download Copy





 
Ebenézer de Souza Possui Superior em Bacharelado em Sistemas de informação e é desenvolvedor de aplicações e sistemas web na plataforma .NET. Atua como analista/programador na Corretora de Seguros BRB e escreve artigos para comunidade ECodigo.com.br



Comentários:


Comente (dê sua opinião):

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Adicionar primeiro dados em um GridView e depois na base de dados usando Transaction.
Criando uma DLL de acesso a dados Genérica utilizando o namespace System.Data.Comom
Neste artigo irei mostrar como utilizar o controle ImageMap que veio na versão 2.0 do Asp.NET.
Criando parâmetros não obrigatórios em procedures
Criar um post de Mensagens sem utilizar banco de dados e sim arquivos.
Utilizando método Sort em uma lista genérica
Criando um método para exibir vários alerts na tela
Pesquisando informações que estejam entre as datas Informadas com Stored Procedure.
Utilizando DLL de acesso a dados genérica – Parte 1




eCode10 Magazine 4 Edição

Baixe a sua sem pagar nada, basta apenas ter um cadastro na comunidade aspneti.com ou ser usuário do ecode10.com.



Edições anteriores
LAYERDEV

Notícias *

Notebook 3D ou 4K?

Notebook vem com tudo...

Visão do Futuro - Day of Glass 2

Futuro próximo pode chegar cedo?...

Lenovo de 14 polegadas IdeaPad

Veja o novo notebook Lenovo IdeaPad...

Windows 8 Store

Channel9 publica um vídeo da Windows Store...

Sony Vaio série Z

Novo Vaio Ultrabook? ou não Ultrabook?...

Samsung quer comprar RIM

Imagine se juntar as duas companhias...

Surface 2.0 mostrado

Novo Surface é mostrado de forma incrível...

Skype Tablet

Será que esse skype tablet pega mesmo?...

Lenovo e o seu novo Ultrabook

Ultrabook chega também pela Lenovo...




NETITC