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;
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:
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:
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.