Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/03/2006, 13:08
heman24
 
Fecha de Ingreso: diciembre-2005
Mensajes: 33
Antigüedad: 19 años, 4 meses
Puntos: 0
Exclamación Calendario que muestre dias con eventos y dias vacios

Hola, estoy usando este script que saque del sitio con el cual puedo ver en un calendario, en forma clara, marcados con link los dias que tengo eventos con fecha cargados en una db. Los dias que el recordset me da bof o eof false, o sea que hay evento, me los marca. Lo que estoy tratando es que los dias que me de bof o eof true, es decir, en la logica de lo que quiero hacer, los dias que tengo disponibles para alquilar el predio, me los muestre con el mismo sistema de links pero con otro color, ya sea de fondo de la tabla como del link. Esto ultimo, no es grave.. (lo del color) sino que lo que no le encuentro la vuelta es que marce tanto los "llenos" como los "vacios".

agradezco de antemano su ayuda.


Código HTML:
<%
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="1" CELLPADDING="1" CELLSPACING="0">
	<TR>
		<TD bgcolor=#FF0000><center><A HREF="calendario1.asp?Dia=<%=iDia%>&Mes=<%=DatePart("m", DateAdd("m", -1, dFecha))%>&Ano=<%=Year(DateAdd("m", -1, dFecha))%>">&lt;&lt;</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="calendario1.asp?Dia=<%=iDia%>&Mes=<%=DatePart("m", DateAdd("m", 1, dFecha))%>&Ano=<%=Year(DateAdd("m", 1, dFecha))%>">&gt;&gt;</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>&nbsp;</TD>" & vbcrlf
		iPosicion = iPosicion + 1
	loop
end if

' preparo fecha para conexion a base de datos
if len(iMes) = 1 then
xmes = 0&iMes
end if


 'conexion a base de datos
		dim con2,rs2,sql2,xdia
		set con2 = server.CreateObject("ADODB.Connection")
Set con2= Server.CreateObject("ADODB.Connection")
con2.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("basdatos/eventos.mdb"))
set rs2 = CreateObject("ADODB.Recordset")
'		set rs2 = server.CreateObject("ADODB.Recordset")
		sql2 = "SELECT *FROM EVENTOS WHERE FECHA LIKE '%/"&xmes&"/%' order by FECHA "
		rs2.open sql2,con2,1,2

		
'''''' aca cambia para los registros que tengo
		rs2.MoveFirst
		

'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 Cint(iActual) = Cint(day(rs2.Fields("FECHA"))) then			


		if iActual = iDia then
			
			'Resaltamos la fecha seleccionada
				Response.Write (vbTab & vbTab & "<TD CLASS='diaActual'><B><A HREF='diax.asp?dia="&day(rs2.Fields("FECHA"))&"'>"& iActual & "</A></B><br></TD>" & vbCrLf)
				rs2.MoveNext
		else
				Response.Write (vbTab & vbTab & "<TD ALIGN='CENTER'><A Target= 'detalle' HREF='diax.asp?dia="&day(rs2.Fields("FECHA"))&"&imes="&month(rs2.Fields("FECHA"))&"&ano="&year(rs2.Fields("FECHA"))&"'>" & iActual & "</A><br></TD>" & vbCrLf)
				
		end if
		
	else
		if iActual = iDia then
			
			'Resaltamos la fecha seleccionada
				Response.Write vbTab & vbTab & "<TD CLASS='diaActual'><B>"& iActual & "</B><br></TD>" & vbCrLf
			
		else
				Response.Write vbTab & vbTab & "<TD ALIGN='CENTER'>" & iActual & "<br></TD>" & vbCrLf
		end if
	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>&nbsp;</TD>" & vbCrLf
		iPosicion = iPosicion + 1
	wend
	'... y el fin de fila!
	Response.Write vbTab & "</TR>" & vbCrLf

end if



%>
</TABLE>