Calendario collegato a tabella sql

ocnarf60

Nuovo Utente
17 Feb 2010
5
0
0
Ho copiato il codice dell'articolo: Creare un Calendario con ASP scritto da Luca Ruggiero il 03/03/2005. Vorrei collegarlo ad una tabella di un db sql con 4 campi:
Data_inizio; Data_Fine; Ora_Inizio; Ora_Fine; Appuntamento.
Vorrei, cliccando sui giorni del calendario, selezionare i record relativi.
Il problema è che non riesco ad utilizzare la data selezionata come condizione where del recordset. Ho modificato il codice del calendario nel modo seguente:

<%
Dim rs1
Dim rs1_cmd
Dim rs1_numRows
Set rs1_cmd = Server.CreateObject ("ADODB.Command")
rs1_cmd.ActiveConnection = "Provider=SQLOLEDB;data Source=srvmssql1;Initial Catalog=ammidati;User Id=Ammidati; Password=Ammi123dati"
'Condizione where che ho provato ad inserire per visualizzare solo i record della data selezionata
rs1_cmd.CommandText = "SELECT * FROM ammidati.Agenda" 'where Data_Inizio='" & data & "'"
rs1_cmd.Prepared = true
Set rs1 = rs1_cmd.Execute
rs1_numRows = 0
%>
<html>
<head>
<title>Comune di Ascoli Piceno - Intranet</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style_intra.css" rel="stylesheet" type="text/css">
<style>
td { font: Normal 10px Verdana; }
</style>

<style type="text/css">
<!--
.sfondocella {
background-color: #CCCCCC;
}
.sfondocellarosso {
background-color: #990033;
}
-->
</style>
</head>
<%
Session.LCID = 1040
%>
<body>
<p>&nbsp;</p>
<Table>
<Tr>
<td width="520" valign="top" class="bordotab">
<%
If Request("data") ="" then
data = Date()
else
data = CDate(Request("data"))
end if
intestazione = UCase(MonthName(Month(Data))) & " " & Year(Data)
gg_mese = "01/" & Month(Data) & "/" & Year(Data)
gg = 1
%>
<table width="100%" border="1" align="center" cellpadding="5"
cellspacing="0" bordercolor="#CCCCCC" bgcolor="#FFFFFF">
<tr>
<td align="center" valign="top" bgcolor="#EEEEEE"><a href="agenda_1.asp?data=<%=DateAdd("m", -1, data)%>"><strong>&lt;</strong></a></td>
<td align="center" colspan="5" bgcolor="#EEEEEE"><b><%=intestazione%></a></b>
<td align="center" bgcolor="#EEEEEE"><a href="agenda_1.asp?data=<%=DateAdd("m", 1, data)%>"><strong>&gt;</strong></a></td></tr>
<tr bgcolor="#FFFFCC">
<td align="center"><b>DOM</b></td>
<td align="center"><b>LUN</b></td>
<td align="center"><b>MAR</b></td>
<td align="center"><b>MER</b></td>
<td align="center"><b>GIO</b></td>
<td align="center"><b>VEN</b></td>
<td align="center"><b>SAB</b></td>
</tr>
<%
If (Month(Data) + 1) > 12 Then
mm = 1
aa = Year(Data) + 1
Else
mm = (Month(Data) + 1)
aa = Year(Data)
End if
primo = "01" & "/" & mm & "/" & aa
ultimo = DateAdd("d", -1, primo)
While (gg <= Day(ultimo))
%>
<tr>
<%
gg_sett = WeekDay(gg_mese)
For i = 1 To gg_sett - 1
%>
<td align="center" bgcolor="#EEEEEE">&nbsp;</td>
<%
Next
For i = gg_sett To 7
If gg = Day(Data) And Month(Data) = Month(Date()) Then
colore_gg = "#FFCCCC"
Else
colore_gg = "#FFFFFF"
End If
%>
<td align="center" bgcolor="<%=colore_gg%>"><a href="agenda_1.asp?data=<%=gg & "/" & Month(Data) & "/" & Year(Data)%>"><%=gg%></a></td>
<%
gg = gg + 1
If gg > Day(ultimo) Then Exit For
Next
For i = i + 1 To 7
%>
<td align="center">&nbsp;</td>
<%
Next
%>
</tr>
<%
gg_mese = gg & "/" & Month(Data) & "/" & Year(Data)
Wend
%>
</table>
</div></td>
</Tr>
</Table>
<p><strong>Appuntamenti del giorno: <%Response.Write(Data)%></strong></p>
<!-- Primo record del DB: Sezione che poi dovrò ripetere per ogni record nel DB-->
<p><strong>Data Inizio:</strong> <%=(rs1.Fields.Item("Data_Inizio").Value)%><br>
<strong>Data Fine:</strong> <%=(rs1.Fields.Item("Data_Fine").Value)%><br>
<strong>Ora Inizio:</strong> <%=(rs1.Fields.Item("Ora_Inizio").Value)%><br>
<strong>Ora Fine</strong>: <%=(rs1.Fields.Item("Ora_Fine").Value)%><br>
<strong>Appunt.:</strong> <%=(rs1.Fields.Item("Appuntamento").Value)%></p>
</body>
</html>
<%
rs1.Close()
Set rs1 = Nothing
%>

Grazie a chiunque voglia darmi un suggerimento.
Franco
 
Ciao,
intanto sostituirei il seguente codice:
%>
<td align="center" bgcolor="<%=colore_gg%>"><a href="agenda_1.asp?data=<%=gg & "/" & Month(Data) & "/" & Year(Data)%>"><%=gg%></a></td>
<%

Con questo, il quale formatta la data aggiungendo uno zero se il giorno o il mese è compreso da 1 a 9:

' codice aggiunto
' mese in corso
Mese = Month(Date())
' aggiungo uno zero se il valore è da 1 a 9
If Len(Mese) < 2 Then
Mese = "0"&mese
End If
' formatto il giorno
Giorno = gg
' aggiungo uno zero se il valore è da 1 a 9
If Len(Giorno) < 2 Then
Giorno = "0"&Giorno
End If
Anno = Year(Now())

%>
<td align="center" bgcolor="<%=colore_gg%>"><a href="agenda_1.asp?data=<%=Giorno%>/<%=Mese%>/<%=Anno%>" target="_blank"><%=gg%></a></td>
<%

Nella pagina "agenda_1.asp" inserisco una query che filtra i risultati in base alla data recuperata dalla stringa "data=" dell'url.

Io farei in modo da aprire questa pagina in un pop-up in modo da mostrare l'elenco degli eventi o semplicemente avvisare che la lista è vuota.

Ovviamente il mio codice l'ho provato dallo script originale, il tuo, senza il DataBase non ci faccio nulla.
 
Grazie per la risposta

Ho provato a sostituire la riga come mi hai suggerito, perchè funzionasse correttamente ho dovuto sostituire, nel codicea agiunto, "Date()" con "Data" cioè la variabile contenente la data selezionata, altrimenti mi venivano selezionati solo i girni del mese ed anno correnti.

Comunque il mio problema è che non riesco a filtrare la query con la data che seleziono: vorrei che se seleziono la data del 10 marzo mi vengano restituiti, se ci sono, i record relativi a quel giorno.
La query "SELECT * FROM ammidati.Agenda" funziona e mi restituisce tutti i record; se però la modifico: "SELECT * FROM ammidati.Agenda where Data_Inizio='" & data & "'" (data è la data che seleziono), viene restituito l'errore "...è necessario disporre di un record corrente".
Spero di aver spiegato bene il mio problema.
Grazie ancora
Franco
 
Prova questa query:

"SELECT * FROM Agenda WHERE Data_inizio = #15/01/2009# "

oppure:

"SELECT * FROM Agenda WHERE Data_inizio >= #"&data&"# "

oppure:

"SELECT * FROM Agenda WHERE Data_inizio >= #"&data&"# AND Data_fine <= #"&data_fine&"# "

ovviamente sostituisci le date con la variabile che a te interessa. :elvis:

P.S.- Dimenticavo, questa query funziona su DB Access e campi Data_inizio/Data_fine in formato Data/Orario.
 
Ultima modifica:
Finalmente ho risolto con alcune modifiche: ho richiesto la data prima che fosse eseguita la query ed inoltre alcune modifiche sono state fatte da dreamweaver nella creazione del recordset con filtro; non riesco a capire nemmeno io come ci sono riuscito. Inserisco comunque il codice funzionante:

<!--#include file="Connections/cn.asp" -->
<%
If Request("data") ="" then
data = Date()
else
data = CDate(Request("data"))
end if

Dim rs1__MMColParam
rs1__MMColParam = "1"
If (Request.QueryString("data") <> "") Then
rs1__MMColParam = Request.QueryString("data")
End If
%>
<%
Dim rs1
Dim rs1_cmd
Dim rs1_numRows

Set rs1_cmd = Server.CreateObject ("ADODB.Command")
rs1_cmd.ActiveConnection = MM_cn_STRING
rs1_cmd.CommandText = "SELECT * FROM ammidati.Agenda WHERE Data_Inizio ='" & data & "'"
rs1_cmd.Prepared = true
rs1_cmd.Parameters.Append rs1_cmd.CreateParameter("param1", 200, 1, 10, rs1__MMColParam) ' adVarChar

Set rs1 = rs1_cmd.Execute
rs1_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = -1
Repeat1__index = 0
rs1_numRows = rs1_numRows + Repeat1__numRows
%>
<html>
<head>
<title>Comune di Ascoli Piceno - Intranet</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style_intra.css" rel="stylesheet" type="text/css">
<style>
td { font: Normal 10px Verdana; }
</style>

<style type="text/css">
<!--
.sfondocella {
background-color: #CCCCCC;
}
.sfondocellarosso {
background-color: #990033;
}
-->
</style>
</head>
<%
Session.LCID = 1040
%>
<body>
<p>&nbsp;</p>
<Table>
<Tr>
<td width="520" valign="top" class="bordotab">
<%
If Request("data") ="" then
data = Date()
else
data = CDate(Request("data"))
end if
intestazione = UCase(MonthName(Month(Data))) & " " & Year(Data)
gg_mese = "01/" & Month(Data) & "/" & Year(Data)
gg = 1
%>
<table width="100%" border="1" align="center" cellpadding="5"
cellspacing="0" bordercolor="#CCCCCC" bgcolor="#FFFFFF">
<tr>
<td align="center" valign="top" bgcolor="#EEEEEE"><a href="agenda.asp?data=<%=DateAdd("m", -1, data)%>"><strong>&lt;</strong></a></td>
<td align="center" colspan="5" bgcolor="#EEEEEE"><b><%=intestazione%></a></b>
<td align="center" bgcolor="#EEEEEE"><a href="agenda.asp?data=<%=DateAdd("m", 1, data)%>"><strong>&gt;</strong></a></td></tr>
<tr bgcolor="#FFFFCC">
<td align="center"><b>DOM</b></td>
<td align="center"><b>LUN</b></td>
<td align="center"><b>MAR</b></td>
<td align="center"><b>MER</b></td>
<td align="center"><b>GIO</b></td>
<td align="center"><b>VEN</b></td>
<td align="center"><b>SAB</b></td>
</tr>
<%
If (Month(Data) + 1) > 12 Then
mm = 1
aa = Year(Data) + 1
Else
mm = (Month(Data) + 1)
aa = Year(Data)
End if
primo = "01" & "/" & mm & "/" & aa
ultimo = DateAdd("d", -1, primo)
While (gg <= Day(ultimo))
%>
<tr>
<%
gg_sett = WeekDay(gg_mese)
For i = 1 To gg_sett - 1
%>
<td align="center" bgcolor="#EEEEEE">&nbsp;</td>
<%
Next
For i = gg_sett To 7
If gg = Day(Data) And Month(Data) = Month(Date()) Then
colore_gg = "#FFCCCC"
Else
colore_gg = "#FFFFFF"
End If
%>


<td align="center" bgcolor="<%=colore_gg%>"><a href="agenda.asp?data=<%=gg & "/" & Month(Data) & "/" & Year(Data)%>"><%=gg%></a></td>

<%
gg = gg + 1
If gg > Day(ultimo) Then Exit For
Next
For i = i + 1 To 7
%>
<td align="center">&nbsp;</td>
<%
Next
%>
</tr>
<%
gg_mese = gg & "/" & Month(Data) & "/" & Year(Data)
Wend
%>
</table>
</div></td>
</Tr>
<Tr>
<td>
<strong>Appuntamenti del giorno: <%Response.Write(Data)%></strong>
</td>
</Tr>
<%
While ((Repeat1__numRows <> 0) AND (NOT rs1.EOF))
%>
<Tr>
<td>
<strong>Data Inizio:</strong> <%=(rs1.Fields.Item("Data_Inizio").Value)%><br>
<strong>Data Fine:</strong> <%=(rs1.Fields.Item("Data_Inizio").Value)%><br>
<strong>Ora Inizio:</strong><%=(rs1.Fields.Item("Ora_Inizio").Value)%><br>
<strong>Ora Fine</strong>:<%=(rs1.Fields.Item("Ora_Fine").Value)%><br>
<strong>Appunt.:</strong><%=(rs1.Fields.Item("Appuntamento").Value)%>
</td>
</Tr>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
rs1.MoveNext()
Wend
%>
</Table>

</body>
</html>
<%
rs1.Close()
Set rs1 = Nothing
%>

Grazie di tutto
Franco
 

Discussioni simili