Como crear un calendario interactivo en ASP

27/09/2006 - 16:45 por Aura | Informe spam
Hola a todos,

Tengo que poner un calendario en una pagina ASP. Este calendario tiene que
ser interativo, es decir, al hacer clic en un dia en concreto, este se tiene
que almacenar en una variable "inicio", y al hacer un segundo clic en otro
dia del calendario que este dia se guarde en la variable "final".

El codigo que tengo del calendario es el siguiente:
<%
Function NombreMes (mes)
select case mes
case 1
NombreMes = "Enero"
case 2
NombreMes = "Febrero"
case 3
NombreMes = "Marzo"
case 4
NombreMes = "Abril"
case 5
NombreMes = "Mayo"
case 6
NombreMes = "Junio"
case 7
NombreMes = "Julio"
case 8
NombreMes = "Agosto"
case 9
NombreMes = "Septiembre"
case 10
NombreMes = "Octubre"
case 11
NombreMes = "Noviembre"
case 12
NombreMes = "Diciembre"
end select
End Function 'NombreMes
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
'Utilizaba esta variable para depurar
'Dim sOrigen

'iDia, iMes, iAno --> la fecha seleccionada
Dim iDia, iMes, iAno, sEnviado

'iDiasDelMes: numero de días del mes
'iDiaSemana: día de la semana en que cae la fecha
'iPrimerDiaSemanaMes: el día de la semana en que empieza el mes
Dim iDiasDelMes, iDiaSemana, iPrimerDiaSemanaMes

Dim dFecha 'la fecha enterita

'Para pintar la tabla necesito
Dim iActual, iPosicion

'Recojo los valores del form
iDia = Request.Form("Dia")
iMes = Request.Form("Mes")
iAno = Request.Form("Ano")
sEnviado = Request.Form("Enviado")
'sOrigen = "form"

'Establezco la fecha según lo enviado
if sEnviado <> "" then
iDia = CInt(iDia)
iMes = CInt(iMes)
iAno = CInt(iAno)
else
'¿La he enviado desde un link?
if Request.QueryString("Dia") <> "" then
iDia = CInt(Request.QueryString("Dia"))
iMes = CInt(Request.QueryString("Mes"))
iAno = CInt(Request.QueryString("Ano"))
'sOrigen = "qrs"
else
'La pongo a la fecha de hoy
iDia = Day(Now)
iMes = Month(Now)
iAno = Year(Now)
'sOrigen = "auto"
end if
end if

if not IsDate(DateSerial(iAno, iMes, iDia)) then
'Avisamos y utilizamos la de hoy
Response.Write("<b>No es una fecha válida. Se utilizará la fecha de
hoy.</b><br>")
dFecha = Date
iMes = Month(dFecha)
iDia = Day(dFecha)
iAno = Year(dFecha)
else
'Formamos la expresión de fecha
dFecha = DateSerial(iAno, iMes, iDia)
end if

'Hallo los días del mes
select case iMes
case 1,3,5,7,8,10,12
iDiasDelMes = 31
case 2
if iAno mod 4 = 0 then
'Año bisiesto!
iDiasDelMes = 29
else
iDiasDelMes = 28
end if
case else
iDiasDelMes = 30
end select

'Hallo el día de la semana
iDiaSemana = DatePart("w", DateSerial(iAno, iMes, iDia))

'Y el día de la semana en que empieza el mes
iPrimerDiaSemanaMes = DatePart("w", DateAdd("d", - iDia+1, DateSerial(iAno,
iMes, iDia)), 2)

'Las siguientes líneas las utilizo para depurar. ;-)
'Response.Write(dFecha)
'Response.Write( iDia & "/" & iMes & "/" & iAno & "<br>")
'Response.Write "Origen: " & sOrigen & "<br>"
'Response.Write "Dia: " & iDia & ", Mes: " & iMes &", Año: " & iAno & "<br>"
'Response.Write "Días del mes: " & iDiasDelMes & "<br>"
'Response.Write "El mes empieza en: " & iPrimerDiaSemanaMes & "<br>"

'Vamos a pintar la tabla
%>
<TABLE BORDER="8" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD bgcolor=#FF0000><center><A
HREF="calendario.asp?Dia=<%=iDia%>&Mes=<%=DatePart("m", DateAdd("m", -1,
dFecha))%>&Ano=<%=Year(DateAdd("m", -1, dFecha))%>"><<</A></center></TD>
<TD COLSPAN="5" bgcolor=#0000FF> <FONT
COLOR=#FFFFFF><B><CENTER><%=NombreMes(iMes)& " " &
Year(dFecha)%></CENTER></B></FONT> </TD>
<TD bgcolor=#FF0000><center><A
HREF="calendario.asp?Dia=<%=iDia%>&Mes=<%=DatePart("m", DateAdd("m", 1,
dFecha))%>&Ano=<%=Year(DateAdd("m", 1, dFecha))%>">>></A></center></TD>
</TR>
<TR>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>L</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>M</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>X</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>J</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>V</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>S</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>D</CENTER></B></TD>
</TR>

<%
'Relleno con blancos si el mes no empieza en Lunes!
if iPrimerDiaSemanaMes <> 1 then
iPosicion = 1
Response.Write vbTab & "<TR> " & VbCrLf
do while iPosicion < iPrimerDiaSemanaMes
Response.Write vbTab & vbTab & "<TD> </TD>" & vbcrlf
iPosicion = iPosicion + 1
loop
end if

'Pintamos el calendario
iActual = 1
iPosicion = iPrimerDiaSemanaMes
do while iActual <= iDiasDelMes

if iPosicion = 1 then
'Empezamos nueva semana, es decir nueva fila
Response.Write vbTab & "<TR>" & VbCrLf
end if

if iActual = iDia then
'Resaltamos la fecha seleccionada
Response.Write vbTab & vbTab & "<TD><B>"& iActual & "</B><br></TD>" &
vbCrLf
else
Response.Write vbTab & vbTab & "<TD>" & iActual & "<br></TD>" & vbCrLf
end if

if iPosicion = 7 then
'Estamos en domingo, cerramos la semana :)
Response.Write vbTab & "</TR>" & vbCrLf
'Pongo iPosicion a cero pq voy a sumarle uno ahorita mismo
iPosicion = 0
end if

'Incrementamos!
iActual = iActual + 1
iPosicion = iPosicion + 1
loop

'Relleno con blancos si no termino en domingo
'Primero compruebo que no sea uno, pues si terminamos en 7 (domingo)
'al incrementar por ultima vez se queda en 1. Típico en los bucles :-)
if iPosicion <> 1 then
while iPosicion <= 7
'Las celdas blancas...
Response.Write vbTab & vbTab & "<TD> </TD>" & vbCrLf
iPosicion = iPosicion + 1
wend
'... y el fin de fila!
Response.Write vbTab & "</TR>" & vbCrLf

end if



%>
</TABLE>

Muchas gracias
Un saludo !

Preguntas similare

Leer las respuestas

#1 Nuno Santos
27/09/2006 - 17:42 | Informe spam
Si lo que pretendes es tener dos fechas lo que recomiendo es tener dos
inputs diferentes y cada input llama el calendario, y este escribe la fecha
seleccionada para el input que lo á llamado. Caso quieras hacer todo en el
mismo calendario lo que debes hacer es verificar si ya escribiste en el
campo inicio y escribes para el campo final, o lo contrario.


NS


Nuno Santos
nunos7[REMOVER]@hotmail.com

"Aura" wrote in message
news:
Hola a todos,

Tengo que poner un calendario en una pagina ASP. Este calendario tiene que
ser interativo, es decir, al hacer clic en un dia en concreto, este se
tiene
que almacenar en una variable "inicio", y al hacer un segundo clic en otro
dia del calendario que este dia se guarde en la variable "final".

El codigo que tengo del calendario es el siguiente:
<%
Function NombreMes (mes)
select case mes
case 1
NombreMes = "Enero"
case 2
NombreMes = "Febrero"
case 3
NombreMes = "Marzo"
case 4
NombreMes = "Abril"
case 5
NombreMes = "Mayo"
case 6
NombreMes = "Junio"
case 7
NombreMes = "Julio"
case 8
NombreMes = "Agosto"
case 9
NombreMes = "Septiembre"
case 10
NombreMes = "Octubre"
case 11
NombreMes = "Noviembre"
case 12
NombreMes = "Diciembre"
end select
End Function 'NombreMes
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
'Utilizaba esta variable para depurar
'Dim sOrigen

'iDia, iMes, iAno --> la fecha seleccionada
Dim iDia, iMes, iAno, sEnviado

'iDiasDelMes: numero de días del mes
'iDiaSemana: día de la semana en que cae la fecha
'iPrimerDiaSemanaMes: el día de la semana en que empieza el mes
Dim iDiasDelMes, iDiaSemana, iPrimerDiaSemanaMes

Dim dFecha 'la fecha enterita

'Para pintar la tabla necesito
Dim iActual, iPosicion

'Recojo los valores del form
iDia = Request.Form("Dia")
iMes = Request.Form("Mes")
iAno = Request.Form("Ano")
sEnviado = Request.Form("Enviado")
'sOrigen = "form"

'Establezco la fecha según lo enviado
if sEnviado <> "" then
iDia = CInt(iDia)
iMes = CInt(iMes)
iAno = CInt(iAno)
else
'¿La he enviado desde un link?
if Request.QueryString("Dia") <> "" then
iDia = CInt(Request.QueryString("Dia"))
iMes = CInt(Request.QueryString("Mes"))
iAno = CInt(Request.QueryString("Ano"))
'sOrigen = "qrs"
else
'La pongo a la fecha de hoy
iDia = Day(Now)
iMes = Month(Now)
iAno = Year(Now)
'sOrigen = "auto"
end if
end if

if not IsDate(DateSerial(iAno, iMes, iDia)) then
'Avisamos y utilizamos la de hoy
Response.Write("<b>No es una fecha válida. Se utilizará la fecha de
hoy.</b><br>")
dFecha = Date
iMes = Month(dFecha)
iDia = Day(dFecha)
iAno = Year(dFecha)
else
'Formamos la expresión de fecha
dFecha = DateSerial(iAno, iMes, iDia)
end if

'Hallo los días del mes
select case iMes
case 1,3,5,7,8,10,12
iDiasDelMes = 31
case 2
if iAno mod 4 = 0 then
'Año bisiesto!
iDiasDelMes = 29
else
iDiasDelMes = 28
end if
case else
iDiasDelMes = 30
end select

'Hallo el día de la semana
iDiaSemana = DatePart("w", DateSerial(iAno, iMes, iDia))

'Y el día de la semana en que empieza el mes
iPrimerDiaSemanaMes = DatePart("w", DateAdd("d", - iDia+1,
DateSerial(iAno,
iMes, iDia)), 2)

'Las siguientes líneas las utilizo para depurar. ;-)
'Response.Write(dFecha)
'Response.Write( iDia & "/" & iMes & "/" & iAno & "<br>")
'Response.Write "Origen: " & sOrigen & "<br>"
'Response.Write "Dia: " & iDia & ", Mes: " & iMes &", Año: " & iAno &
"<br>"
'Response.Write "Días del mes: " & iDiasDelMes & "<br>"
'Response.Write "El mes empieza en: " & iPrimerDiaSemanaMes & "<br>"

'Vamos a pintar la tabla
%>
<TABLE BORDER="8" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD bgcolor=#FF0000><center><A
HREF="calendario.asp?Dia=<%=iDia%>&Mes=<%=DatePart("m", DateAdd("m", -1,
dFecha))%>&Ano=<%=Year(DateAdd("m", -1, dFecha))%>"><<</A></center></TD>
<TD COLSPAN="5" bgcolor=#0000FF> <FONT
COLOR=#FFFFFF><B><CENTER><%=NombreMes(iMes)& " " &
Year(dFecha)%></CENTER></B></FONT> </TD>
<TD bgcolor=#FF0000><center><A
HREF="calendario.asp?Dia=<%=iDia%>&Mes=<%=DatePart("m", DateAdd("m", 1,
dFecha))%>&Ano=<%=Year(DateAdd("m", 1, dFecha))%>">>></A></center></TD>
</TR>
<TR>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>L</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>M</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>X</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>J</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>V</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>S</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>D</CENTER></B></TD>
</TR>

<%
'Relleno con blancos si el mes no empieza en Lunes!
if iPrimerDiaSemanaMes <> 1 then
iPosicion = 1
Response.Write vbTab & "<TR> " & VbCrLf
do while iPosicion < iPrimerDiaSemanaMes
Response.Write vbTab & vbTab & "<TD> </TD>" & vbcrlf
iPosicion = iPosicion + 1
loop
end if

'Pintamos el calendario
iActual = 1
iPosicion = iPrimerDiaSemanaMes
do while iActual <= iDiasDelMes

if iPosicion = 1 then
'Empezamos nueva semana, es decir nueva fila
Response.Write vbTab & "<TR>" & VbCrLf
end if

if iActual = iDia then
'Resaltamos la fecha seleccionada
Response.Write vbTab & vbTab & "<TD><B>"& iActual & "</B><br></TD>" &
vbCrLf
else
Response.Write vbTab & vbTab & "<TD>" & iActual & "<br></TD>" & vbCrLf
end if

if iPosicion = 7 then
'Estamos en domingo, cerramos la semana :)
Response.Write vbTab & "</TR>" & vbCrLf
'Pongo iPosicion a cero pq voy a sumarle uno ahorita mismo
iPosicion = 0
end if

'Incrementamos!
iActual = iActual + 1
iPosicion = iPosicion + 1
loop

'Relleno con blancos si no termino en domingo
'Primero compruebo que no sea uno, pues si terminamos en 7 (domingo)
'al incrementar por ultima vez se queda en 1. Típico en los bucles :-)
if iPosicion <> 1 then
while iPosicion <= 7
'Las celdas blancas...
Response.Write vbTab & vbTab & "<TD> </TD>" & vbCrLf
iPosicion = iPosicion + 1
wend
'... y el fin de fila!
Response.Write vbTab & "</TR>" & vbCrLf

end if



%>
</TABLE>

Muchas gracias
Un saludo !
Respuesta Responder a este mensaje
#2 ¥-- Lombar --¥
27/09/2006 - 21:02 | Informe spam
Yo recientemente solventé el problema de una manera distinta.
Por un lado genero el calendario de una manera parecida a la tuya. Ojo,
calculando los años bisiestos.
Genero para ello una tabla con 12 filas, los 12 meses, y con 37 columnas (1
mes puede empezar en el dia 6 de la semana y tener 31 días). Sabiendo el dia
de la semana del 1 de Enero del año que se desee es fácil pintar la tabla.

La segunda parte del problema la he soslayado con una variable que tiene 366
caracteres y que es la que almaceno en la base de datos. Por defecto tiene
un valor de todo "a". El dia que empieza el periodo lo llamo "b". El dia
intermedio es "c" y el dia final es "d". Así que inicialmente la cadena es
"aaaaaaaaa...aaa" y una vez moficiada es "aaaaabccccccdaaaaa.aaa". De esta
manera es facil guardar la cadena en una base de datos, leerla,...
Para sacar los dias simplemente partes la cadena en trozos de 1 caracter de
extensión, y automáticamente se genera una matriz del tipo dato(0), dato(1),
dato (2),

Como verás es por tanto sencillo al generar el calendario asignar a cada dia
del año su dato(x) correspondiente, al pinchar en el dia es facil modificar
su valor y, por ultimo, uniendo la matriz de datos, es facil generar de
nuevo la cadena.

Claro que si deseas que al pinchar cambie el color deberás de mezclar en tu
código un poco de java que se encargue de ello.

¥-- Lombar --¥
EchMotor 69
Jose Lombardia

"Aura" escribió en el mensaje
news:
Hola a todos,

Tengo que poner un calendario en una pagina ASP. Este calendario tiene que
ser interativo, es decir, al hacer clic en un dia en concreto, este se
tiene
que almacenar en una variable "inicio", y al hacer un segundo clic en otro
dia del calendario que este dia se guarde en la variable "final".

El codigo que tengo del calendario es el siguiente:
<%
Function NombreMes (mes)
select case mes
case 1
NombreMes = "Enero"
case 2
NombreMes = "Febrero"
case 3
NombreMes = "Marzo"
case 4
NombreMes = "Abril"
case 5
NombreMes = "Mayo"
case 6
NombreMes = "Junio"
case 7
NombreMes = "Julio"
case 8
NombreMes = "Agosto"
case 9
NombreMes = "Septiembre"
case 10
NombreMes = "Octubre"
case 11
NombreMes = "Noviembre"
case 12
NombreMes = "Diciembre"
end select
End Function 'NombreMes
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
'Utilizaba esta variable para depurar
'Dim sOrigen

'iDia, iMes, iAno --> la fecha seleccionada
Dim iDia, iMes, iAno, sEnviado

'iDiasDelMes: numero de días del mes
'iDiaSemana: día de la semana en que cae la fecha
'iPrimerDiaSemanaMes: el día de la semana en que empieza el mes
Dim iDiasDelMes, iDiaSemana, iPrimerDiaSemanaMes

Dim dFecha 'la fecha enterita

'Para pintar la tabla necesito
Dim iActual, iPosicion

'Recojo los valores del form
iDia = Request.Form("Dia")
iMes = Request.Form("Mes")
iAno = Request.Form("Ano")
sEnviado = Request.Form("Enviado")
'sOrigen = "form"

'Establezco la fecha según lo enviado
if sEnviado <> "" then
iDia = CInt(iDia)
iMes = CInt(iMes)
iAno = CInt(iAno)
else
'¿La he enviado desde un link?
if Request.QueryString("Dia") <> "" then
iDia = CInt(Request.QueryString("Dia"))
iMes = CInt(Request.QueryString("Mes"))
iAno = CInt(Request.QueryString("Ano"))
'sOrigen = "qrs"
else
'La pongo a la fecha de hoy
iDia = Day(Now)
iMes = Month(Now)
iAno = Year(Now)
'sOrigen = "auto"
end if
end if

if not IsDate(DateSerial(iAno, iMes, iDia)) then
'Avisamos y utilizamos la de hoy
Response.Write("<b>No es una fecha válida. Se utilizará la fecha de
hoy.</b><br>")
dFecha = Date
iMes = Month(dFecha)
iDia = Day(dFecha)
iAno = Year(dFecha)
else
'Formamos la expresión de fecha
dFecha = DateSerial(iAno, iMes, iDia)
end if

'Hallo los días del mes
select case iMes
case 1,3,5,7,8,10,12
iDiasDelMes = 31
case 2
if iAno mod 4 = 0 then
'Año bisiesto!
iDiasDelMes = 29
else
iDiasDelMes = 28
end if
case else
iDiasDelMes = 30
end select

'Hallo el día de la semana
iDiaSemana = DatePart("w", DateSerial(iAno, iMes, iDia))

'Y el día de la semana en que empieza el mes
iPrimerDiaSemanaMes = DatePart("w", DateAdd("d", - iDia+1,
DateSerial(iAno,
iMes, iDia)), 2)

'Las siguientes líneas las utilizo para depurar. ;-)
'Response.Write(dFecha)
'Response.Write( iDia & "/" & iMes & "/" & iAno & "<br>")
'Response.Write "Origen: " & sOrigen & "<br>"
'Response.Write "Dia: " & iDia & ", Mes: " & iMes &", Año: " & iAno &
"<br>"
'Response.Write "Días del mes: " & iDiasDelMes & "<br>"
'Response.Write "El mes empieza en: " & iPrimerDiaSemanaMes & "<br>"

'Vamos a pintar la tabla
%>
<TABLE BORDER="8" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD bgcolor=#FF0000><center><A
HREF="calendario.asp?Dia=<%=iDia%>&Mes=<%=DatePart("m", DateAdd("m", -1,
dFecha))%>&Ano=<%=Year(DateAdd("m", -1, dFecha))%>"><<</A></center></TD>
<TD COLSPAN="5" bgcolor=#0000FF> <FONT
COLOR=#FFFFFF><B><CENTER><%=NombreMes(iMes)& " " &
Year(dFecha)%></CENTER></B></FONT> </TD>
<TD bgcolor=#FF0000><center><A
HREF="calendario.asp?Dia=<%=iDia%>&Mes=<%=DatePart("m", DateAdd("m", 1,
dFecha))%>&Ano=<%=Year(DateAdd("m", 1, dFecha))%>">>></A></center></TD>
</TR>
<TR>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>L</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>M</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>X</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>J</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>V</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>S</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>D</CENTER></B></TD>
</TR>

<%
'Relleno con blancos si el mes no empieza en Lunes!
if iPrimerDiaSemanaMes <> 1 then
iPosicion = 1
Response.Write vbTab & "<TR> " & VbCrLf
do while iPosicion < iPrimerDiaSemanaMes
Response.Write vbTab & vbTab & "<TD> </TD>" & vbcrlf
iPosicion = iPosicion + 1
loop
end if

'Pintamos el calendario
iActual = 1
iPosicion = iPrimerDiaSemanaMes
do while iActual <= iDiasDelMes

if iPosicion = 1 then
'Empezamos nueva semana, es decir nueva fila
Response.Write vbTab & "<TR>" & VbCrLf
end if

if iActual = iDia then
'Resaltamos la fecha seleccionada
Response.Write vbTab & vbTab & "<TD><B>"& iActual & "</B><br></TD>" &
vbCrLf
else
Response.Write vbTab & vbTab & "<TD>" & iActual & "<br></TD>" & vbCrLf
end if

if iPosicion = 7 then
'Estamos en domingo, cerramos la semana :)
Response.Write vbTab & "</TR>" & vbCrLf
'Pongo iPosicion a cero pq voy a sumarle uno ahorita mismo
iPosicion = 0
end if

'Incrementamos!
iActual = iActual + 1
iPosicion = iPosicion + 1
loop

'Relleno con blancos si no termino en domingo
'Primero compruebo que no sea uno, pues si terminamos en 7 (domingo)
'al incrementar por ultima vez se queda en 1. Típico en los bucles :-)
if iPosicion <> 1 then
while iPosicion <= 7
'Las celdas blancas...
Response.Write vbTab & vbTab & "<TD> </TD>" & vbCrLf
iPosicion = iPosicion + 1
wend
'... y el fin de fila!
Response.Write vbTab & "</TR>" & vbCrLf

end if



%>
</TABLE>

Muchas gracias
Un saludo !

Respuesta Responder a este mensaje
#3 Nuno Santos
27/09/2006 - 21:17 | Informe spam
Puedes consultar la web www.asptutor.com tiene allá un ejemplo completo de
um calendário em ASP

NS

"Aura" escreveu na mensagem
news:
Hola a todos,

Tengo que poner un calendario en una pagina ASP. Este calendario tiene que
ser interativo, es decir, al hacer clic en un dia en concreto, este se
tiene
que almacenar en una variable "inicio", y al hacer un segundo clic en otro
dia del calendario que este dia se guarde en la variable "final".

El codigo que tengo del calendario es el siguiente:
<%
Function NombreMes (mes)
select case mes
case 1
NombreMes = "Enero"
case 2
NombreMes = "Febrero"
case 3
NombreMes = "Marzo"
case 4
NombreMes = "Abril"
case 5
NombreMes = "Mayo"
case 6
NombreMes = "Junio"
case 7
NombreMes = "Julio"
case 8
NombreMes = "Agosto"
case 9
NombreMes = "Septiembre"
case 10
NombreMes = "Octubre"
case 11
NombreMes = "Noviembre"
case 12
NombreMes = "Diciembre"
end select
End Function 'NombreMes
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
'Utilizaba esta variable para depurar
'Dim sOrigen

'iDia, iMes, iAno --> la fecha seleccionada
Dim iDia, iMes, iAno, sEnviado

'iDiasDelMes: numero de días del mes
'iDiaSemana: día de la semana en que cae la fecha
'iPrimerDiaSemanaMes: el día de la semana en que empieza el mes
Dim iDiasDelMes, iDiaSemana, iPrimerDiaSemanaMes

Dim dFecha 'la fecha enterita

'Para pintar la tabla necesito
Dim iActual, iPosicion

'Recojo los valores del form
iDia = Request.Form("Dia")
iMes = Request.Form("Mes")
iAno = Request.Form("Ano")
sEnviado = Request.Form("Enviado")
'sOrigen = "form"

'Establezco la fecha según lo enviado
if sEnviado <> "" then
iDia = CInt(iDia)
iMes = CInt(iMes)
iAno = CInt(iAno)
else
'¿La he enviado desde un link?
if Request.QueryString("Dia") <> "" then
iDia = CInt(Request.QueryString("Dia"))
iMes = CInt(Request.QueryString("Mes"))
iAno = CInt(Request.QueryString("Ano"))
'sOrigen = "qrs"
else
'La pongo a la fecha de hoy
iDia = Day(Now)
iMes = Month(Now)
iAno = Year(Now)
'sOrigen = "auto"
end if
end if

if not IsDate(DateSerial(iAno, iMes, iDia)) then
'Avisamos y utilizamos la de hoy
Response.Write("<b>No es una fecha válida. Se utilizará la fecha de
hoy.</b><br>")
dFecha = Date
iMes = Month(dFecha)
iDia = Day(dFecha)
iAno = Year(dFecha)
else
'Formamos la expresión de fecha
dFecha = DateSerial(iAno, iMes, iDia)
end if

'Hallo los días del mes
select case iMes
case 1,3,5,7,8,10,12
iDiasDelMes = 31
case 2
if iAno mod 4 = 0 then
'Año bisiesto!
iDiasDelMes = 29
else
iDiasDelMes = 28
end if
case else
iDiasDelMes = 30
end select

'Hallo el día de la semana
iDiaSemana = DatePart("w", DateSerial(iAno, iMes, iDia))

'Y el día de la semana en que empieza el mes
iPrimerDiaSemanaMes = DatePart("w", DateAdd("d", - iDia+1,
DateSerial(iAno,
iMes, iDia)), 2)

'Las siguientes líneas las utilizo para depurar. ;-)
'Response.Write(dFecha)
'Response.Write( iDia & "/" & iMes & "/" & iAno & "<br>")
'Response.Write "Origen: " & sOrigen & "<br>"
'Response.Write "Dia: " & iDia & ", Mes: " & iMes &", Año: " & iAno &
"<br>"
'Response.Write "Días del mes: " & iDiasDelMes & "<br>"
'Response.Write "El mes empieza en: " & iPrimerDiaSemanaMes & "<br>"

'Vamos a pintar la tabla
%>
<TABLE BORDER="8" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD bgcolor=#FF0000><center><A
HREF="calendario.asp?Dia=<%=iDia%>&Mes=<%=DatePart("m", DateAdd("m", -1,
dFecha))%>&Ano=<%=Year(DateAdd("m", -1, dFecha))%>"><<</A></center></TD>
<TD COLSPAN="5" bgcolor=#0000FF> <FONT
COLOR=#FFFFFF><B><CENTER><%=NombreMes(iMes)& " " &
Year(dFecha)%></CENTER></B></FONT> </TD>
<TD bgcolor=#FF0000><center><A
HREF="calendario.asp?Dia=<%=iDia%>&Mes=<%=DatePart("m", DateAdd("m", 1,
dFecha))%>&Ano=<%=Year(DateAdd("m", 1, dFecha))%>">>></A></center></TD>
</TR>
<TR>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>L</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>M</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>X</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>J</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>V</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>S</CENTER></B></TD>
<TD><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT=""
BORDER="0"><br><B><CENTER>D</CENTER></B></TD>
</TR>

<%
'Relleno con blancos si el mes no empieza en Lunes!
if iPrimerDiaSemanaMes <> 1 then
iPosicion = 1
Response.Write vbTab & "<TR> " & VbCrLf
do while iPosicion < iPrimerDiaSemanaMes
Response.Write vbTab & vbTab & "<TD> </TD>" & vbcrlf
iPosicion = iPosicion + 1
loop
end if

'Pintamos el calendario
iActual = 1
iPosicion = iPrimerDiaSemanaMes
do while iActual <= iDiasDelMes

if iPosicion = 1 then
'Empezamos nueva semana, es decir nueva fila
Response.Write vbTab & "<TR>" & VbCrLf
end if

if iActual = iDia then
'Resaltamos la fecha seleccionada
Response.Write vbTab & vbTab & "<TD><B>"& iActual & "</B><br></TD>" &
vbCrLf
else
Response.Write vbTab & vbTab & "<TD>" & iActual & "<br></TD>" & vbCrLf
end if

if iPosicion = 7 then
'Estamos en domingo, cerramos la semana :)
Response.Write vbTab & "</TR>" & vbCrLf
'Pongo iPosicion a cero pq voy a sumarle uno ahorita mismo
iPosicion = 0
end if

'Incrementamos!
iActual = iActual + 1
iPosicion = iPosicion + 1
loop

'Relleno con blancos si no termino en domingo
'Primero compruebo que no sea uno, pues si terminamos en 7 (domingo)
'al incrementar por ultima vez se queda en 1. Típico en los bucles :-)
if iPosicion <> 1 then
while iPosicion <= 7
'Las celdas blancas...
Response.Write vbTab & vbTab & "<TD> </TD>" & vbCrLf
iPosicion = iPosicion + 1
wend
'... y el fin de fila!
Response.Write vbTab & "</TR>" & vbCrLf

end if



%>
</TABLE>

Muchas gracias
Un saludo !
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida