Calendario date da database

  • Creatore Discussione Creatore Discussione maxterm
  • Data di inizio Data di inizio

maxterm

Nuovo Utente
23 Feb 2010
3
0
0
Ciao a tutti,
dovrei realizzare una tabella da database access che in alto indica tutti i giorni del mese corrente ed a sinistra un elenco dinamico di nomi presi dal db, inoltre per ogni nome devo inserire un simbolo (qualsiasi) sotto la data corrispondente (vi allego una foto per spiegarmi meglio).
Partendo dal tutorial Creare un Calendario con ASP sono riuscito a fare la prima riga con le date e ad elencare i nomi a sinistra, ma poi non riesco ad andare oltre. Potete aiutarmi?
Questo è il codice:
<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/miaconnessione.asp" -->
<%
Dim Recordset1
Dim Recordset1_cmd
Dim Recordset1_numRows

Set Recordset1_cmd = Server.CreateObject ("ADODB.Command")
Recordset1_cmd.ActiveConnection = MM_scuolefki_STRING
Recordset1_cmd.CommandText = "SELECT IDTessere, Cognome FROM Tessere"
Recordset1_cmd.Prepared = true

Set Recordset1 = Recordset1_cmd.Execute
Recordset1_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = -1
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
%>
<%
Dim intestazione ' Determina l'intestazione del box, mese e anno
Dim gg_mese ' Determina il giorno del mese
Dim gg_sett ' Determina il giorno della settimana
Dim gg, mm, aa ' Determina il giorno, il mese e l'anno correnti
Dim primo ' Determina il primo giorno del mese
Dim ultimo ' Determina l'ultimo giorno del mese
Dim colore_gg ' Colore di sfondo per il giorno corrente

intestazione = UCase(MonthName(Month(Date()))) & " " & Year(Date())
gg_mese = "01/" & Month(Date()) & "/" & Year(Date())
gg = 1
%>

<table bgcolor="#FFFFFF" align="center" cellpadding="5"
cellspacing="0" border="1" bordercolor="#CCCCCC">
<tr>
<td align="center" colspan="7" bgcolor="#EEEEEE">
<b><%=intestazione%></b>
</td>
</tr>

<%
' Verifico che se il mese il corso è Dicembre
' imposto il mese successivo a Gennaio dell'anno successivo
' oppure imposto mese ed anno alla data attuale
If (Month(Date()) + 1) > 12 Then
mm = 1
aa = Year(Date()) + 1
Else
mm = (Month(Date()) + 1)
aa = Year(Date())
End if

primo = "01" & "/" & mm & "/" & aa ' Primo giorno del mese
ultimo = DateAdd("d", -1, primo) ' Ultimo giorno del mese

' Creo dinamicamente la tabella ciclando i giorni
' ed interrompendo i cicli in funzione del fatto
' che il mese sia ancora in corso o meno
' e li associo al giorno della settimana corrispondente
While (gg < Day(ultimo))
%>
<tr>
<%
gg_sett = WeekDay(gg_mese)
For i = 1 To gg_sett - 1
%>
<td align="center">Attività</td>
<%
Next
For i = gg_sett To 31
' Imposto il colore di sfondo del giorno corrente
If gg = Day(Date()) Then
colore_gg = "#FFCCCC"
Else
colore_gg = "#FFFFFF"
End If
%>
<th scope="col" align="center" bgcolor="<%=colore_gg%>"><%=gg%></th>

<%
gg = gg + 1
If gg > Day(ultimo) Then Exit For
Next
For i = i + 1 To 7
%>

<%
Next
%>
</tr>
<%
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF))
%>
<tr>
<td><%=(Recordset1.Fields.Item("Cognome").Value)%></td>

</tr>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
Recordset1.MoveNext()
Wend
%>

<%
gg_mese = gg & "/" & Month(Date()) & "/" & Year(Date())
Wend
%>

</table>

<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
 

Allegati

  • tabella.jpg
    tabella.jpg
    8,2 KB · Visite: 1.546
mi spiego meglio: devo ottenere una griglia tipo excell solo per visualizzare dei dati.

Nella prima riga mi servono i giorni del mese

poi devo creare una riga per ogni record del database

a sinistra della riga scrivo il record stesso ripetuto n volte.

(fin qui ci sono arrivato)

il problema è creare dinamicamente tante colonne quanti sono i giorni del mese come nella prima riga.
 
Scusa ma nel db che dati hai? e quali vuoi mostrare?

Il calendario in asp (così comè) ti serve solo a mostrare date e giorni, le informazioni legate ad esse, fanno parte di un altro discorso.
Se ho inteso...vuoi creare una sorta di agenda comune dove ad ogni nome corrisponda un'informazione per ogni singolo giorno...(se sbaglio correggimi). es Luigi gg 16 "si" - mario gg 16 "no" e così via.

Quindi il calendario e le stesse informazioni devi già averle nel db!
 
nel database ho un campo nome, uno data ed uno si/no che ovviamente sono già riempiti.
penso che hai capito, vorrei mostrare una sorta di planning mensile quindi sapere che:

tizio(nome) il giorno 16(data) deve fare qualcosa(si/no)
Caio(nome) il giorno 24(data) deve fare qualcosa(si/no)
ecc., per n record

quindi vorrei fare in modo di visualizzare dinamicamente la griglia. Il calendario è un'idea ma se ti viene in mente qualcosa di meglio o di più semplice va bene
 
Capito...ma se deve essere mensile il più semplice che mi viene in mente è quello di farti 12 tabelle in db...
es. tab. gennaio con 31 colonne per i giorni, 1 colonna per nomi e 1 colonna per data...(che ti servirà solo per l'anno) poi inserisci le informazioni...
es. nella tab gennaio il sig mario il giorno 16 "si"....
Poi mostri tutta la tabella richiamata da un request o con una semplice IF reindirizza a secondo del mese corrente.
Se non vuoi essere pignolo ti basta anche una sola tabella..nella pagina cambi l'intestazione a seconda del mese e filtri i dati per date precedentemente manipolate.
Alla fine ti ritrovi un calendario perpetuo che puoi filtrare come ti pare e gestire in maniera semplice...lavori solo un pò sul db.
 
Ultima modifica:

Discussioni simili