Calendar
ID - Auto Number (Primary Key)
Subject - texto
Message - memo
Day - Numero
Month - Numero
Year - Numero
AddedBy - texto
DateAdded - data
Todos os registros são bastante auto-explicativo com exceção do campo ID. Vamos usá-lo para apresentar o evento desejado.
Uma vez que o banco de dados é feita, você precisa para criar suas páginas ASP. Neste exemplo, vamos usar quatro páginas; calendar.asp, display_event.asp, add_event.asp e edit_event.asp. Você poderia provavelmente começar afastado com apenas duas páginas, mas para a facilidade de uso, vamos criar quatro.
Vamos começar com a página calendar.asp.
<--#include file="adovbs.inc"-->
Dim DB_CONNECTIONSTRING
Dim objRecordset
DB_CONNECTIONSTRING = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & _
Server.Mappath("users.mdb") & ";"
Set objRecordset = Server.CreateObject("ADODB.Recordset")
objRecordset.Open "calendar", DB_CONNECTIONSTRING, adOpenStatic, adLockPessimistic, adCmdTable
Essa parte do código que escreve os dias do calendário e inserie os assuntos de nosso banco de dados com um link para a página display_event.asp. Isso dará aos usuários clicar em algo para dar um veiw em todo o evento.
If Not objRecordset.BOF Then
'-- Mover para o primeiro registro
objRecordset.MoveFirst
Do Until objRecordset.EOF
If objRecordset.Fields("Year") = Year(dDate) Then
If objRecordset.Fields("Month") = Month(dDate) Then
If objRecordset.Fields("Day") = iCurrent Then
'-- Se tudo coincide com o dia atual, em seguida, exibir
' o sujeito com o ID coresponding --
Response.Write("<br><font size=2><a href=" & _
Chr(34) & "display_event.asp?ID=" & _
objRecordset.Fields("ID") & Chr(34) & ">" & _
objRecordset.Fields("Subject") & _
"</a></font><br>")
End If
End If
End If
'-- Se nada corresponde, passar para o próximo registro e
' começar tudo de novo --
objRecordset.MoveNext
Loop
End If
Temos agora apresentado o tema do evento correto com o ID de evento anexado na URL como uma seqüência de consulta (ex. display_event.asp? ID = 10). Quando o usuário clica sobre o tema do evento, passamos o ID de evento para a página display_event.asp.
Que nos leva à página do evento. Você precisa primeiro se conectar ao banco de dados (o mesmo que acima). Então você precisa para obter o ID de eventos a partir da seqüência de consulta e percorrer o banco de dados até encontrarmos o evento:
EventToShow = CInt(Request.QueryString("ID"))
If Not objRecordset.EOF Then
objRecordset.MoveFirst
Do Until objRecordset.Fields("ID") = EventToShow
objRecordset.MoveNext
Loop
End If Em seguida, deseja correlacionar o evento exibido com uma variável de sessão para editar e exibir o evento:
Session("EventToEdit") = EventToShow
Data:
<%
Response.Write objRecordset.Fields("Month") & "/" & _
objRecordset.Fields("Day") & "/" & _
objRecordset.Fields("Year")
%>
Assunto:
<%
Response.Write objRecordset.Fields("Subject")
%>
Mensagem: <%= objRecordset.Fields("Message") %><br style="mso-special-character: line-break"> <br style="mso-special-character:line-break">
Adicionado por:
<%
Response.Write objRecordset.Fields("AddedBy") & _
" on " & objRecordset.Fields("DateAdded")
%>
Não se esqueça de limpar a sua conexão com o banco:
objRecordset.Close
Set objRecordset = Nothing [size="3"] As próximas duas páginas (edit_event.asp & add_event.asp) são muito semelhantes. A única exceção é que com o evento de edição, queremos mostrar o evento existente dentro do formulário. Como mencionei anteriormente, você poderia provavelmente começar com a combinação destas duas páginas. A única coisa que você precisa manter em mente é com a manipulação do recorset. Na página de atualização, precisamos usar objRecordset.Update, enquanto na página add_event.asp, você vai querer usar objRecordset.AddNew.
Em ambos os casos, precisamos conectar ao banco de dados de entrada e os dados do formulário para os campos, semelhante ao abaixo:
objRecordset.Fields("Subject") = Request.Form("txtSubject")
objRecordset.Fields("Message") = Request.Form("Message")
objRecordset.Fields("Day") = Request.Form("txtDay")
objRecordset.Fields("Month") = Request.Form("txtMonth")
objRecordset.Fields("Year") = Request.Form("txtYear")
objRecordset.Fields("AddedBy") = Request.Form("txtAddedBy")
objRecordset.Fields("DateAdded") = Now() [size="3"] Há obviamente muito mais que você pode fazer com este exemplo, mas isso vai lhe proporcionar um bom ponto de partida. Você pode querer só permitem aos usuários editar / excluir eventos que eles postaram (este é onde o campo AddedBy vem no lugar). Você também pode querer inserir um tempo para o evento. Você poderia código de evento de cor os dias que têm eventos postados.Abaixo todos os códigos das págins.
add_event.asp
<%@ LANGUAGE=VBSCRIPT %>
<%Option Explicit%>
<%
Dim DB_CONNECTIONSTRING
Dim objRecordset
Dim Added
%>
<!--#include file="adovbs.inc"-->
<%
DB_CONNECTIONSTRING = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("users.mdb") & ";"
Set objRecordset = Server.CreateObject("ADODB.Recordset")
objRecordset.Open "calendar", DB_CONNECTIONSTRING, adOpenStatic, adLockPessimistic, adCmdTable
If Request.Form("btnAdd") = "Add Event" Then
objRecordset.AddNew
'-- Adiciona records no database do form --
objRecordset.Fields("Subject") = Request.Form("txtSubject")
objRecordset.Fields("Message") = Request.Form("Message")
objRecordset.Fields("Day") = Request.Form("selDay")
objRecordset.Fields("Month") = Request.Form("selMonth")
objRecordset.Fields("Year") = Request.Form("selYear")
objRecordset.Fields("AddedBy") = Request.Form("txtAddedBy")
objRecordset.Fields("DateAdded") = Now()
objRecordset.Update
Added = "True"
End If
objRecordset.Close
Set objRecordset = Nothing
If Added = "True" Then
Response.Redirect("calendar.asp")
End If
%>
<html>
<center>
<form method="post" action="add_event.asp">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>Dia:
<select name="selDay">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select></td>
<td>Mês:
<select name="selMonth">
<OPTION VALUE="1">Janeiro</option>
<OPTION VALUE="2">Fevereiro</option>
<OPTION VALUE="3">Março</option>
<OPTION VALUE="4">Abril</option>
<OPTION VALUE="5">Maio</option>
<OPTION VALUE="6">Junho</option>
<OPTION VALUE="7">Julho</option>
<OPTION VALUE="8">Agosto</option>
<OPTION VALUE="9">Setembro</option>
<OPTION VALUE="10">Outubro</option>
<OPTION VALUE="11">Novembro</option>
<OPTION VALUE="12">Dezembro</option>
</select></td>
<td>Ano:
<select name="selYear">
<option value="1999">2008</option>
<option value="2000">2009</option>
<option value="2001">2010</option>
<option value="2002">2011</option>
<option value="2003">2012</option>
<option value="2004">2013</option>
</select></td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td colspan="3" align="center">Assunto:
<input type="text" name="txtSubject" size="35"></td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td colspan="3" align="center"><textarea name="Message" cols="40" rows="10"></textarea></td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td colspan="3" align="center">Adicionado por:
<input type="text" name="txtAddedBy" size="35" value="<%= Session("FirstName") & " " & Session("LastName")%>"></td>
</tr>
</table>
<p>
<input type="submit" name="btnAdd" value="Adiciona"> <input type="Reset" name="btnReset" value="Limpar">
</form>
</center>
</body>
</html>
Aqui a página calendar.asp
<%@ LANGUAGE=VBSCRIPT %>
<%Option Explicit%>
<!--#include file="adovbs.inc"-->
<%
If Request.Form("AddEvent") = "Add Event" Then
Response.Redirect("add_event.asp")
End If
If Request.Form("EditEvent") = "Edit Event" Then
Response.Redirect("edit_event.asp")
End If
Dim DB_CONNECTIONSTRING
Dim objRecordset
DB_CONNECTIONSTRING = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("users.mdb") & ";"
Set objRecordset = Server.CreateObject("ADODB.Recordset")
objRecordset.Open "calendar", DB_CONNECTIONSTRING, adOpenStatic, adLockPessimistic, adCmdTable
%>
<%
Function GetDaysInMonth(iMonth, iYear)
Select Case iMonth
Case 1, 3, 5, 7, 8, 10, 12
GetDaysInMonth = 31
Case 4, 6, 9, 11
GetDaysInMonth = 30
Case 2
If IsDate("February 29, " & iYear) Then
GetDaysInMonth = 29
Else
GetDaysInMonth = 28
End If
End Select
End Function
Function GetWeekdayMonthStartsOn(iMonth, iYear)
GetWeekdayMonthStartsOn = WeekDay(CDate(iMonth & "/1/" & iYear))
End Function
Function SubtractOneMonth(dDate)
Dim iDay, iMonth, iYear
iDay = Day(dDate)
iMonth = Month(dDate)
iYear = Year(dDate)
If iMonth = 1 Then
iMonth = 12
iYear = iYear - 1
Else
iMonth = iMonth - 1
End If
If iDay > GetDaysInMonth(iMonth, iYear) Then iDay = GetDaysInMonth(iMonth, iYear)
SubtractOneMonth = CDate(iMonth & "-" & iDay & "-" & iYear)
End Function
Function AddOneMonth(dDate)
Dim iDay, iMonth, iYear
iDay = Day(dDate)
iMonth = Month(dDate)
iYear = Year(dDate)
If iMonth = 12 Then
iMonth = 1
iYear = iYear + 1
Else
iMonth = iMonth + 1
End If
If iDay > GetDaysInMonth(iMonth, iYear) Then iDay = GetDaysInMonth(iMonth, iYear)
AddOneMonth = CDate(iMonth & "-" & iDay & "-" & iYear)
End Function
Dim dDate ' Data estamos exibindo calendário para
Dim iDIM ' Dias no mês
Dim iDOW ' Dia da semana que começa no mês
Dim iCurrent ' Variável que usamos para segurar dia atual do mês como nós escrevemos tabela
Dim iPosition ' Variável que usamos para manter a posição atual na tabela
If IsDate(Request.QueryString("date")) Then
dDate = CDate(Request.QueryString("date"))
Else
If IsDate(Request.QueryString("month") & "-" & Request.QueryString("day") & "-" & Request.QueryString("year")) Then
dDate = CDate(Request.QueryString("month") & "-" & Request.QueryString("day") & "-" & Request.QueryString("year"))
Else
dDate = Date()
If Request.QueryString.Count <> 0 Then
Response.Write "a data que você escolheu não era uma data válida. O calendário foi definido para a data de hoje.<BR><BR>"
End If
End If
End If
iDIM = GetDaysInMonth(Month(dDate), Year(dDate))
iDOW = GetWeekdayMonthStartsOn(Month(dDate), Year(dDate))
%>
<html>
<center>
<table border="1" cellspacing="0" cellpadding="1">
<tr>
<td bgcolor="blue" align="center" colspan="7">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="right"><b><A HREF="calendar.asp?date=<%= SubtractOneMonth(dDate) %>" style="color: #FFFFFF"><--</A></b></TD>
<td align="center"><font color="#FFFFFF"><B><%= MonthName(Month(dDate)) & " " & Year(dDate) %></B></font></TD>
<td align="left"><b><A HREF="calendar.asp?date=<%= AddOneMonth(dDate) %>" style="color: #FFFFFF">--></A></b></TD>
<td align="right" valign="top"><a href="http://www.baboo.com"><img src="close.gif" border="0"></a></td>
</tr>
</TABLE>
</td>
</tr>
<tr bgcolor="blue">
<td ALIGN="center" width="80"><B><font color="#FFFFFF">Dom</font></B></TD>
<td ALIGN="center" width="80"><B><font color="#FFFFFF">Seg</font></B></TD>
<td ALIGN="center" width="80"><B><font color="#FFFFFF">Ter</font></B></TD>
<td ALIGN="center" width="80"><B><font color="#FFFFFF">Qua</font></B></TD>
<td ALIGN="center" width="80"><B><font color="#FFFFFF">Qui</font></B></TD>
<td ALIGN="center" width="80"><B><font color="#FFFFFF">Sex</font></B></TD>
<td ALIGN="center" width="80"><B><font color="#FFFFFF">Sab</font></B></TD>
</tr>
<%
If iDOW <> 1 Then
Response.Write(vbTab & "<tr>" & vbCrLf)
iPosition = 1
Do While iPosition < iDOW
Response.Write(vbTab & vbTab & "<td> </td>" & vbCrLf)
iPosition = iPosition + 1
Loop
End If
'-- Escreva dia do mês em slots bom dia --
iCurrent = 1
iPosition = iDOW
Do While iCurrent <= iDIM
'-- opeabre a tabela --
If iPosition = 1 Then
Response.Write(vbTab & "<tr>" & vbCrLf)
End If
Response.Write(vbTab & vbTab & "<td align=left valign=top height=60><b>" & iCurrent & "</b>")
If Not objRecordset.BOF Then
objRecordset.MoveFirst
Do Until objRecordset.EOF
If objRecordset.Fields("Year") = Year(dDate) Then
If objRecordset.Fields("Month") = Month(dDate) Then
If objRecordset.Fields("Day") = iCurrent Then
Response.Write("<br><font size=2><a href=" & Chr(34) & "display_event.asp?ID=" & objRecordset.Fields("ID") & Chr(34) & ">" & objRecordset.Fields("Subject") & "</a></font><br>")
End If
End If
End If
objRecordset.MoveNext
Loop
End If
Response.Write("</td>" & vbCrLf)
'-- Fecha a tabela --
If iPosition = 7 Then
Response.Write vbTab & "</tr>" & vbCrLf
iPosition = 0
End If
'-- Incrementa as variaveis --
iCurrent = iCurrent + 1
iPosition = iPosition + 1
Loop
If iPosition <> 1 Then
Do While iPosition <= 7
Response.Write(vbTab & vbTab & "<td> </td>" & vbCrLf)
iPosition = iPosition + 1
Loop
Response.Write vbTab & "</TR>" & vbCrLf
End If
%>
</table>
<%
objRecordset.Close
Set objRecordset = Nothing
%>
<%
Response.Write("<form action=" & Chr(34) & "calendar.asp" & Chr(34) & " method=" & Chr(34) & "post" & Chr(34) & ">" & Chr(10))
Response.Write("<input type=" & Chr(34) & "submit" & Chr(34) & " name=" & Chr(34) & "AddEvent" & Chr(34) & " value=" & Chr(34) & "Add Event" & Chr(34) & ">" & " ")
Response.Write("</form>")
%>
</center>
</body>
</html>
Display_event.asp
<%@ LANGUAGE=VBSCRIPT %>
<%Option Explicit%>
<%
Dim MyName
Dim DB_CONNECTIONSTRING
Dim objRecordset
Dim EventToShow
%>
<!--#include file="adovbs.inc"-->
<%
MyName = Session("Firstname") & " " & Session("LastName")
DB_CONNECTIONSTRING = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("users.mdb") & ";"
Set objRecordset = Server.CreateObject("ADODB.Recordset")
objRecordset.Open "calendar", DB_CONNECTIONSTRING, adOpenStatic, adLockPessimistic, adCmdTable
EventToShow = CInt(Request.QueryString("ID"))
If Not objRecordset.EOF Then
objRecordset.MoveFirst
Do Until objRecordset.Fields("ID") = EventToShow
objRecordset.MoveNext
Loop
End If
Session("EventToEdit") = EventToShow
%>
<html>
Data:</b> <%= objRecordset.Fields("Month") & "/" & objRecordset.Fields("Day") & "/" & objRecordset.Fields("Year") %><p>
<b>Assunto:</b> <%= objRecordset.Fields("Subject") %><p>
<b>Mensagem:</b> <%= objRecordset.Fields("Message") %><p>
<b>Adicionado por:</b> <%= objRecordset.Fields("AddedBy") & " on " & objRecordset.Fields("DateAdded")%>
<p> </p>
<form method="post" action="edit_event.asp">
<input type="submit" name="btnEditEvent" value="Edita/Exclui Evento">
</form>
</body>
</html>
<%
objRecordset.Close
Set objRecordset = Nothing
%>
Edit_event.asp
<%@ LANGUAGE=VBSCRIPT %>
<%Option Explicit%>
<%
Dim DB_CONNECTIONSTRING
Dim objRecordset
Dim Updated
%>
<!--#include file="adovbs.inc"-->
<%
If Request.Form("btnCalendar") = "Back To Calendar" Then
Response.Redirect("calendar.asp")
End If
DB_CONNECTIONSTRING = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("users.mdb") & ";"
Set objRecordset = Server.CreateObject("ADODB.Recordset")
objRecordset.Open "calendar", DB_CONNECTIONSTRING, adOpenStatic, adLockPessimistic, adCmdTable
If Session("EventToEdit") <> 0 Then
If Not objRecordset.EOF Then
objRecordset.MoveFirst
Do Until objRecordset.Fields("ID") = Session("EventToEdit")
objRecordset.MoveNext
Loop
End If
End If
If Request.Form("btnEdit") = "Update" Then
'-- Adiciona records no database do form --
objRecordset.Fields("Subject") = Request.Form("txtSubject")
objRecordset.Fields("Message") = Request.Form("Message")
objRecordset.Fields("Day") = Request.Form("txtDay")
objRecordset.Fields("Month") = Request.Form("txtMonth")
objRecordset.Fields("Year") = Request.Form("txtYear")
objRecordset.Fields("AddedBy") = Request.Form("txtAddedBy")
objRecordset.Fields("DateAdded") = Now()
objRecordset.Update
Updated = "True"
End If
If Request.Form("btnDelete") = "Delete" Then
'--Delete o evento no database --
objRecordset.Delete adAffectCurrent
Response.Redirect("calendar.asp")
End If
%>
<html>
<center>
<%
If Updated = "True" Then
Response.Write("<font size=4><b><font color=" & Chr(34) & "red" & Chr(34) & ">" & objRecordset.Fields("Subject") & "</font> foi atualizada</b></font><p>")
End If
%>
<form method="post" action="edit_event.asp">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>Dia:
<input type="text" name="txtDay" size="4" value="<%= objRecordset.Fields("Day")%>"></td>
<td>Mês:
<input type="text" name="txtMonth" size="10" value="<%= objRecordset.Fields("Month")%>"></td>
<td>Ano:
<input type="text" name="txtYear" size="5" value="<%= objRecordset.Fields("Year")%>"></td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td colspan="3" align="center">Assunto:
<input type="text" name="txtSubject" size="35" value="<%= objRecordset.Fields("Subject")%>"></td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td colspan="3" align="center"><textarea name="Message" cols="40" rows="10"><%= objRecordset.Fields("Message")%></textarea></td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td colspan="3" align="center">Adicionado por:
<input type="text" name="txtAddedBy" size="35" value="<%= objRecordset.Fields("AddedBy")%>"></td>
</tr>
</table>
<p>
<input type="submit" name="btnEdit" value="Atualizar">
<input type="submit" name="btnDelete" value="Excluir">
<input type="Reset" name="btnReset" value="Limpar">
<input type="submit" name="btnCalendar" value="Voltar Calendario">
</form>
</center>
</body>
</html>
<%
objRecordset.Close
Set objRecordset = Nothing
%>

Help














