Foros del Web » Programando para Internet » ASP Clásico »

marcar eventos multidia en calendario

Estas en el tema de marcar eventos multidia en calendario en el foro de ASP Clásico en Foros del Web. Buenas, necesito marcar y poner enlace en el calendario de eventos multidia ... en la base de datos existe un campo fecha inicial y uno ...
  #1 (permalink)  
Antiguo 27/07/2010, 03:54
 
Fecha de Ingreso: abril-2002
Mensajes: 68
Antigüedad: 22 años, 8 meses
Puntos: 0
marcar eventos multidia en calendario

Buenas, necesito marcar y poner enlace en el calendario de eventos multidia ...
en la base de datos existe un campo fecha inicial y uno de fecha final.

paso e lcodigo que tengo ( de momento solo marca las fechas de actuacion)
podeis ayudarme ?? gracias

Código:
<%
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("<br>")
'Response.Write( iDia & "/" & iMes & "/" & iAno & "<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
%>
<style type="text/css">
<!--
.Estilo1 {font-size: 10px}
-->
</style>
<div align="center">
  <TABLE BORDER="5" CELLPADDING="1" CELLSPACING="0" class="calendario">
    <TR>
      <TD bgcolor=#FF6600><center><A HREF="teeeest.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=#CC3300> <CENTER>
		    <font color="#FFFFFF"><b><%=NombreMes(iMes)& " " & Year(dFecha)%></b></font>
	    </CENTER> </TD>
	    <TD bgcolor=#FF6600><center><A HREF="teeeest.asp?Dia=<%=iDia%>&Mes=<%=DatePart("m", DateAdd("m", 1, dFecha))%>&Ano=<%=Year(DateAdd("m", 1, dFecha))%>">&gt;&gt;</A></center></TD>
    </TR>
    <TR>
      <TD><span class="Estilo1"><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT="" BORDER="0"><br>
        </span>		  <CENTER class="Estilo1">
          <b>L</b>
          </CENTER>	    </TD>
	    <TD><span class="Estilo1"><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT="" BORDER="0"><br>
	    </span>		  <CENTER class="Estilo1">
	        <b>M</b>
	        </CENTER>	    </TD>
	    <TD><span class="Estilo1"><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT="" BORDER="0"><br>
	    </span>		  <CENTER class="Estilo1">
	        <b>X</b>
	        </CENTER>	    </TD>
	    <TD><span class="Estilo1"><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT="" BORDER="0"><br>
	    </span>		  <CENTER class="Estilo1">
	        <b>J</b>
	        </CENTER>	    </TD>
	    <TD><span class="Estilo1"><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT="" BORDER="0"><br>
	    </span>		  <CENTER class="Estilo1">
	        <b>V</b>
	        </CENTER>	    </TD>
	    <TD><span class="Estilo1"><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT="" BORDER="0"><br>
	    </span>		  <CENTER class="Estilo1">
	        <b>S</b>
	        </CENTER>	    </TD>
	    <TD><span class="Estilo1"><IMG SRC="espacio.gif" HEIGHT="1" WIDTH="30" ALT="" BORDER="0"><br>
	    </span>		  <CENTER class="Estilo1">
	        <b>D</b>
	        </CENTER>	    </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,diaLink
		Set con2 = Server.CreateObject("ADODB.Connection")
con2.Open "Driver={MySQL ODBC 5.1 Driver};server=nombreserver;database=nombreconexions;UID=usuario;PWD=pass"
		set rs2 = server.CreateObject("ADODB.Recordset")
		sql2 = "SELECT DISTINCT fechaactuacion FROM videos WHERE MONTH(fechaactuacion) = " & xmes & " order by (fechaactuacion) ASC "
		rs2.open sql2,con2,1,2
		if not rs2.eof = true then
		rs2.MoveFirst
		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
'Pintamos los días
		If Not rs2.eof = true then
				diaLink = Cint(Trim(day(rs2.Fields("fechaactuacion"))))
		end if
				
		if iActual = iDia and iActual = (diaLink) then
		
		'Resaltamos la fecha del día CON LINK
			Response.Write (vbTab & vbTab & "<TD CLASS='diaActual'ALIGN='center'><B><A HREF='teeeest.asp?dia="&diaLink&"'>"& iActual & "</A></B><br></TD>" & vbCrLf)
			if not rs2.eof = true then
			while  (Cint(Trim(day(rs2.Fields("fechaactuacion")))) = diaLink)
			rs2.MoveNext
			wend
			end if
		
		elseif iActual = iDia then
		
		'Resaltamos la fecha del dia SIN LINK
			Response.Write vbTab & vbTab & "<TD CLASS='diaActual'  ALIGN='CENTER' ><B>"& iActual & "</B><br></TD>" & vbCrLf
		
		elseif iActual = (diaLink) then
		
		'Días CON LINKS
			Response.Write (vbTab & vbTab & "<TD ALIGN='CENTER'><A HREF='diax.asp?dia="&diaLink&"& mes=" & xmes & "'>" & iActual & "</A><br></TD>" & vbCrLf)
			If Not (rs2.EOF = TRUE) Then
				If (Cint(Trim(day(rs2.Fields("fechaactuacion")))) = diaLink) Then
						rs2.MoveNext
				End if		
			End if
			
		else
		
		'Dias SIN LINKS
			Response.Write vbTab & vbTab & "<TD ALIGN='CENTER' >" & 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>&nbsp;</TD>" & vbCrLf
		iPosicion = iPosicion + 1
	wend
	'... y el fin de fila!
	Response.Write vbTab & "</TR>" & vbCrLf

end if




%>
  </TABLE>
  <p>
  </p>
</div>
__________________
Lordztein
  #2 (permalink)  
Antiguo 27/07/2010, 12:38
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: marcar eventos multidia en calendario

Hola

¿Qué te parece usar AJAX?

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 28/07/2010, 02:24
 
Fecha de Ingreso: abril-2002
Mensajes: 68
Antigüedad: 22 años, 8 meses
Puntos: 0
Respuesta: marcar eventos multidia en calendario

me encantaria utilizar ajax ...pero no se como crear un xml dinamico desde ASP.
__________________
Lordztein
  #4 (permalink)  
Antiguo 28/07/2010, 02:38
 
Fecha de Ingreso: abril-2002
Mensajes: 68
Antigüedad: 22 años, 8 meses
Puntos: 0
Respuesta: marcar eventos multidia en calendario

Adler ?? solucione el tema de crear xml desde asp , pero el link que me pasaste no hace lo que quiero.

necesito que marque los eventos desde dia inicial a final y no solo el dia inicial.

Gracias
__________________
Lordztein
  #5 (permalink)  
Antiguo 28/07/2010, 06:34
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: marcar eventos multidia en calendario

Hola

Solo se ha de marcar los días que están dentro del rango de fecha de inicio y final, dandole la misma descripción y titulo

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 28/07/2010, 09:03
 
Fecha de Ingreso: abril-2002
Mensajes: 68
Antigüedad: 22 años, 8 meses
Puntos: 0
Respuesta: marcar eventos multidia en calendario

je je ... como ??
__________________
Lordztein
  #7 (permalink)  
Antiguo 28/07/2010, 13:01
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: marcar eventos multidia en calendario

Cita:
Iniciado por Lordztein Ver Mensaje
je je ... como ??
O no te he entendido o tu pregunta es absurda. Me decantaré por la primera opción. La ideas es que el usuario clicke en aquellos días en los que se estará celebrando el evento

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 29/07/2010, 00:50
 
Fecha de Ingreso: abril-2002
Mensajes: 68
Antigüedad: 22 años, 8 meses
Puntos: 0
Respuesta: marcar eventos multidia en calendario

Lo siento .... mi pregunta era absurda ...

lo que quiero que haga, creo que lo tengo claro ... el problema es que no se como hacerlo .

he mirado el codigo y lo que hace es que si la fecha del evento es igual a la fecha calendario ( dia ) pone link y lo marca.

necesitaria que esta parte de codigo no funcionara asi ... sino de esta otra forma

que marcara y pusiera link a las fechas comprendidas entre fecha inicio y fecha fin que son los datos que tengo en la basede datos por evento.

me falta esta parte de codigo.

espero que ahora se entienda un poco mejor el problema.

Gracias por tu paciencia !!
__________________
Lordztein
  #9 (permalink)  
Antiguo 02/08/2010, 06:55
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: marcar eventos multidia en calendario

Hola

Veamos si es esto lo que buscas

Se necesita 4 campos
Cita:
FechaInicio --> Fecha (21/09/2010)
FechaFinal ---> Fecha (25/09/2010)
AnyoMes ---> Texto (2010/09)
Evento ---> Texto
Te he marcado las partes editables. Si no entiendes el código no edites nada más
Código ASP:
Ver original
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
  2. <% Option Explicit %>
  3. <html>
  4. <head>
  5. <title>Horarios</title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  7. <style type="text/css">
  8. #ContenedorCalendario{background-color:#EEEEEE;padding-top:20px;border: 1px solid #C9C9C9;width:800px;}
  9. .calFondoCalendario {background-color:#EEEEEE;border: 1px solid #C9C9C9;}
  10. #calFondoMes, .calFondoDias, .calFondoSemanas, .calFondoNumeroSemanas {background-color:#C9C9C9;}
  11. #calFondoMes {font:bold 11px Arial, Helvetica, sans-serif; text-align:center;}
  12. .calFondoDias, .calFondoSemanas, .calFondoNumeroSemanas {font:900 9px Arial, Helvetica, sans-serif;}
  13. #calDias, #calFinSemana {font:700 11px Arial, Helvetica, sans-serif;text-decoration:none;}
  14. #calDias a{color:#333333;}
  15. #calFinSemana {color:#FF0000;}
  16. #calDiasMarcado, #calFinSemanaMarcado {background-color:#C9C9C9; font:700 11px Arial, Helvetica, sans-serif;}
  17. #calDiasMarcado a{color:#FFFFFF;text-decoration:none;}
  18. #calFinSemanaMarcado a {color:#FF0000;text-decoration:none;}
  19. #calDiasMarcado div, #calFinSemanaMarcado div {display:none;}
  20. #calDiasMarcado:hover div, #calFinSemanaMarcado:hover div {display:block;position:absolute;border:1px solid #C9C9C9;width:100px;height:100px;background-color:#FFFFFF;color:#000000;font:11px Verdana, Helvetica, sans-serif;}
  21. .calDiaVacio {background-color:#FFFFFF;color:#C9C9C9;font:700 11px Arial, Helvetica, sans-serif; text-align:center;}
  22. #paginador {background-color:#EEEEEE;height:30px;padding-top:7px;}
  23. #paginador a{background-color:#A4A4A4;color:#FFFFFF;font:900 9px Arial, Helvetica, sans-serif;text-decoration:none;padding:3px;border: 1px solid #C9C9C9;}
  24. </style>
  25. </head>
  26. <body>
  27.  
  28. <div id="ContenedorCalendario">
  29.  
  30. <%
  31. ' ===============  Sub y Funciones ================
  32. Sub Dias()
  33. %>
  34. </td>
  35. </tr>
  36. <tr align="center">
  37. <td rows="6"><div class="calFondoSemanas">Sem</div></td>
  38. <td><div class="calFondoDias">Lun</div></td>
  39. <td><div class="calFondoDias">Mar</div></td>
  40. <td><div class="calFondoDias">Mi&eacute;</div></td>
  41. <td><div class="calFondoDias">Jue</div></td>
  42. <td><div class="calFondoDias">Vie</div></td>
  43. <td><div class="calFondoDias">S&aacute;b</div></td>
  44. <td><div class="calFondoDias">Dom</div></td>
  45. </tr>
  46. <%
  47. End Sub
  48.  
  49. Function Nombre_Mes(ElMes)
  50. Select Case ElMes
  51. Case 1
  52. Nombre_Mes = "Enero"
  53. Case 2
  54. Nombre_Mes = "Febrero"
  55. Case 3
  56. Nombre_Mes = "Marzo"
  57. Case 4
  58. Nombre_Mes = "Abril"
  59. Case 5
  60. Nombre_Mes = "Mayo"
  61. Case 6
  62. Nombre_Mes = "Junio"
  63. Case 7
  64. Nombre_Mes = "Julio"
  65. Case 8
  66. Nombre_Mes = "Agosto"
  67. Case 9
  68. Nombre_Mes = "Septiembre"
  69. Case 10
  70. Nombre_Mes = "Octubre"
  71. Case 11
  72. Nombre_Mes = "Noviembre"
  73. Case 12
  74. Nombre_Mes = "Diciembre"
  75. Case Else
  76. Nombre_Mes = "ERROR!"
  77. End Select
  78. End Function
  79.  
  80. Function UltimoDia(ElMes, ElAnyo)
  81. Select Case ElMes
  82. Case 1, 3, 5, 7, 8, 10, 12
  83. UltimoDia = 31
  84.  
  85. Case 4, 6, 9, 11
  86. UltimoDia = 30
  87.  
  88. Case 2
  89. If IsDate(ElAnyo & "-" & ElMes & "-" & "29") Then UltimoDia = 29 Else UltimoDia = 28
  90.  
  91. Case Else
  92. UltimoDia = 31
  93. End Select
  94. End Function
  95.  
  96. ' ===============  Sub y Funciones ================
  97.  
  98.  
  99. Dim oConn, SQL, rs, registros
  100. Dim j, i, z, indiceCicloArrUnidimen, indiceCicloEvento ' ----> Contadores
  101. Dim numRows
  102. Dim arregloIni(), arregloFin(), DiffDias(), RangoDias(), TxtEvento(), RangoDias2(), TxtEvento2()
  103. Dim FechaIni, FechaFin, Evento
  104. Dim Mes, ElMes
  105. Dim Anyo, ElAnyo
  106. Dim FechaInicio, FechaActual, FechaFinal
  107. Dim DiaActual
  108. Dim SumarMesQuery, MesAnyo
  109. Dim PrimerDiaMes
  110. Dim Semana, nSemanas01, nSemanas31
  111. Dim DiasMesSiguiente, DiasMesAnterior
  112. Dim Columna, Fila
  113. Dim UltimoDiaMesAnterior
  114. Dim EstamosEnEl, cad
  115. Dim unMesMenos, unMesMas, splMenos, splMas, mesMenos, mesMas, anyoMas, anyoMenos
  116. Dim pagMeses ' ---> Meses que hay que sumar o restar para hacer la paginación
  117. FechaIni = 0
  118. FechaFin = 1
  119. Evento = 2
  120.  
  121.  
  122. ' Si viene vacía o no es numerica
  123. If Request.Querystring("mes") = "" or Not IsNumeric(Request.Querystring("mes")) then
  124. Mes = CInt(Month(Date))
  125. Else
  126. Mes = CInt(Request.Querystring("mes"))
  127. End If
  128. If Request.Querystring("anyo") = "" or Not IsNumeric(Request.Querystring("anyo")) then
  129. Anyo = CInt(Year(Date))
  130. Else
  131. Anyo = CInt(Request.Querystring("anyo"))
  132. End If
  133. FechaInicio = CDate("1/" & Month(Date) & "/" & Year(Date))
  134. FechaActual = CDate("1/" & Mes & "/" & Anyo)
  135. FechaFinal = DateAdd("m", 4, FechaInicio)
  136.  
  137. ' Conexión
  138.  
  139. ' Traemos los eventos y sus fechas
  140. ' Consulta para un mes
  141. SQL ="SELECT FechaInicio, FechaFinal, Evento, AnyoMes FROM Calendario2 WHERE AnyoMes = '"& CInt(Anyo) & "/" & CInt(Mes) & "';"
  142. ' Consulta para más de un mes
  143. 'SQL ="SELECT FechaInicio, FechaFinal, Evento FROM Calendario2 WHERE FechaInicio >= #"& FechaActual &"#;"
  144. set rs = oConn.Execute(SQL)
  145.  
  146. ' Hay eventos??
  147. IF not rs.eof = True Then
  148.  
  149. ' Traemos las fechas de inicio y final
  150. registros = rs.getrows()
  151. rs.Close
  152. Set rs = Nothing
  153. oConn.Close
  154. Set oConn = Nothing
  155.  
  156. numRows = UBound(registros,2)+1
  157.  
  158. indiceCicloArrUnidimen = 0
  159.  
  160. Redim arregloIni(numRows)
  161. Redim arregloFin(numRows)
  162. Redim DiffDias(numRows)
  163. 'Redim RangoDias(1, 1)
  164. 'Redim TxtEvento(1, 1)
  165.  
  166. For j = 0 to UBound(registros,2)
  167. arregloIni(j) = registros(FechaIni,j)
  168. arregloFin(j) = registros(FechaFin,j)
  169.  
  170. ' Sacamos el número días en los que el evento estará activo
  171. DiffDias(j) = DateDiff("d", arregloIni(j), arregloFin(j))
  172.  
  173. Redim preserve RangoDias(numRows, DiffDias(j))
  174. Redim preserve TxtEvento(numRows, DiffDias(j))
  175.  
  176.  
  177. ' Sacamos el rango de fechas entre la fecha inical y final y los eventos
  178. For i = 0 to DiffDias(j)
  179. RangoDias(j, i) =  DateSerial(CInt(split(arregloIni(j),"/")(2)), CInt(split(arregloIni(j),"/")(1)), CInt(split(arregloIni(j),"/")(0)) + CInt(i))
  180. TxtEvento(j, i) = registros(Evento,j)
  181. Next 'i
  182.  
  183. ' Trabajamos esos eventos y fechas  para insertarlas en una matríz unidimensional y poder evaluarlas más tarde
  184. For z = 0 to UBound(RangoDias,2)
  185. Redim Preserve RangoDias2(indiceCicloArrUnidimen)
  186. Redim Preserve TxtEvento2(indiceCicloArrUnidimen)
  187. RangoDias2(indiceCicloArrUnidimen) = """" & RangoDias(j,z) & """"
  188. TxtEvento2(indiceCicloArrUnidimen) = TxtEvento(j,z)
  189. indiceCicloArrUnidimen = indiceCicloArrUnidimen +1
  190. Next 'z
  191. Next 'j
  192.  
  193. indiceCicloEvento = 0
  194. %>
  195.  
  196. <!-- Empezamos a montar el Calendario -->
  197.  
  198. <div>
  199. <table border="0" cellspacing="0px" cellpadding="0px" width="85%" align="center">
  200. <tr>
  201. <%
  202. IF FechaActual > FechaFinal then ' Aún no ha progresado 6 meses en el calendario
  203. %>
  204. <td id="calFondoMes">No puede consultar eventos con mas de 6 meses de antelación</td></tr></table>
  205. <div id="paginador" align="center">
  206. <a href="./calendario.asp?mes=<%=Month(FechaFinal)%>&anyo=<%=Year(FechaFinal)%>">Atr&aacute;s</a>
  207. </div>
  208. <%
  209. ELSEIF FechaActual < FechaInicio then ' Se ha manipulado las var con una fecha menor a la de inicio
  210. %>
  211. <td id="calFondoMes">No puede consultar eventos ya pasados</td></tr></table>
  212. <div id="paginador" align="center">
  213. <a href="./calendario.asp?mes=<%=Month(Date)%>&anyo=<%=Year(Date)%>">Atr&aacute;s</a>
  214. </div>
  215. <%
  216. ELSE
  217. ' =======
  218. ' EDITABLE
  219. ' Para mostrar más de un mes editamos el límite del ciclo
  220. ' =======
  221. For i = 0 to 0 ' ¿Cuantos meses mostramos? 0 : 1 mes, 1 : 2 meses, ...
  222. SumarMesQuery = DateAdd("m", i, DateSerial(Anyo, Mes, 1))
  223. MesAnyo = Split(SumarMesQuery,"/")
  224. ElMes = MesAnyo(1)
  225. ElAnyo = MesAnyo(2)
  226. %>
  227. <td>
  228. <table border="0" cellspacing="1px" cellpadding="3px" width="200px" align="center" class="calFondoCalendario">
  229. <tr align="center">
  230. <td colspan="8">
  231. <div id="calFondoMes">
  232. <%=Nombre_Mes(ElMes)%>,&nbsp;<%=ElAnyo%>
  233. </div>
  234. <%
  235. Call Dias()
  236. DiaActual = 1
  237. PrimerDiaMes = DatePart("w", DateAdd("d", -1, DateSerial(ElAnyo, ElMes, 1)), vbMonday)
  238. Semana = DatePart("ww", CDate("01/" & ElMes & "/" & ElAnyo), vbMonday, vbFirstFourDays) ' Número de la semana del mes actual
  239. nSemanas31 = DatePart("ww", CDate("12/31/" & ElAnyo), vbMonday, vbFirstFourDays) 'Número de semanas del año
  240. nSemanas01 = DatePart("ww", CDate("01/01/" & ElAnyo), vbMonday, vbFirstFourDays) 'Número de semana de la primera semana del año siguiente
  241. DiasMesSiguiente = 0
  242. For Fila = 0 to 5
  243. %>
  244. <tr height="20px">
A por la otra parte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 02/08/2010, 06:56
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: marcar eventos multidia en calendario

Código ASP:
Ver original
  1. <%
  2. ' ============== Número de la Semana ==============
  3. IF Fila = 0 then
  4. If Semana = nSemanas01 then  'La última semana del año anterior comprende algún día del siguiente año
  5. %>
  6. <td class="calFondoNumeroSemanas"><%=Semana%></td>
  7. <%
  8. Else
  9. %>
  10. <td class="calFondoNumeroSemanas"><%if Len(Semana) = 1 then Response.Write "0"&Semana else Response.Write Semana end if%></td>
  11. <%
  12. End If
  13. ELSE
  14. If Semana >= nSemanas31 then 'Primera semana del año
  15. Semana = 1
  16. Else
  17. Semana = Semana +1
  18. End If
  19. %>
  20. <td class="calFondoNumeroSemanas"><%if Len(Semana) = 1 then Response.Write "0"&Semana else Response.Write Semana end if%></td>
  21. <%
  22. END IF
  23. ' ============== Fin  Número de la Semana ==============
  24. For Columna = 0 to 6
  25. IF Fila = 0 and Columna < PrimerDiaMes then ' No hay día
  26. UltimoDiaMesAnterior = UltimoDia((ElMes-1),ElAnyo)
  27. DiasMesAnterior = ((UltimoDiaMesAnterior - (PrimerDiaMes-1)) + Columna)
  28. %>
  29. <td class="calDiaVacio"><%=DiasMesAnterior%></td>
  30. <%
  31. ELSEIF DiaActual > UltimoDia(ElMes, ElAnyo) then ' No hay día
  32. DiasMesSiguiente = DiasMesSiguiente +1
  33. %>
  34. <td class="calDiaVacio"><%=DiasMesSiguiente%></td>
  35. <%
  36. ELSE
  37. ' Días de los meses que se muestrn en pantalla
  38. EstamosEnEl = """" & CDate(DiaActual & "/" & ElMes & "/" & ElAnyo) & """"
  39. ' Montamos la evaluación de las fechas mostradas en pantalla y los días en los que transcurrirán los eventos
  40. cad = EstamosEnEl & " = " & Join(RangoDias2, " or " & EstamosEnEl & " = ")
  41. %>
  42. <td bgcolor="#FFFFFF" align="center">
  43. <%
  44. If Columna = 5 or Columna = 6 then ' Es fin de semana
  45. ' Evaluamos
  46. if eval(cad) = True Then ' Hay evento
  47. %>
  48. <div id="calFinSemanaMarcado">
  49. <a href=""><%=DiaActual%></a>
  50. <div><%=TxtEvento2(indiceCicloEvento)%></div>
  51. </div>
  52. <%
  53. indiceCicloEvento = indiceCicloEvento + 1
  54. else
  55. %>
  56. <div id="calFinSemana">
  57. <%=DiaActual%>
  58. </div>
  59. <%
  60. end if
  61. Else
  62. ' Evaluamos
  63. if eval(cad) = True Then ' Hay evento
  64. %>
  65. <div id="calDiasMarcado">
  66. <a href=""><%=DiaActual%></a>
  67. <div><%=TxtEvento2(indiceCicloEvento)%></div>
  68. </div>
  69. <%
  70. indiceCicloEvento = indiceCicloEvento + 1
  71. else
  72. %>
  73. <div id="calDias">
  74. <%=DiaActual%>
  75. </div>
  76. <%
  77. end if
  78. End If
  79. %>
  80. </td>
  81. <%
  82. DiaActual = DiaActual +1
  83. END IF
  84. Next ' Columna
  85. %>
  86. </tr>
  87. <%
  88. Next ' Fila
  89. %>
  90. </table></td>
  91. <%
  92. Next 'i
  93. %>
  94. </tr>
  95. </table>
  96. </div>
  97.  
  98. <!-- Fin Calendario -->
  99.  
  100. <!-- Paginador  -->
  101.  
  102. <div id="paginador" align="center">
  103. <%
  104. ' =======
  105. 'EDITABLE
  106. ' Elejimos cuantos meses queremos que avance en en la paginación
  107. pagMeses = 1
  108. ' =======
  109. unMesMenos = DateAdd("m", -pagMeses, DateSerial(Anyo, Mes, 1))
  110. unMesMas = DateAdd("m", +pagMeses, DateSerial(Anyo, Mes, 1))
  111. splMenos = split(unmesmenos, "/")
  112. splMas = split(unmesmas, "/")
  113. mesMenos = splMenos(1)
  114. anyoMenos = splMenos(2)
  115. mesMas = splMas(1)
  116. anyoMas = splMas(2)
  117. %>
  118. <a href="./calendario.asp?mes=<%=mesMenos%>&anyo=<%=anyoMenos%>">Anterior</a>
  119. <a href="./calendario.asp?mes=<%=mesMas%>&anyo=<%=anyoMas%>">Siguiente</a>
  120. </div>
  121.  
  122. <!-- Fin Paginador  -->
  123.  
  124. <%
  125. END IF
  126. ELSE
  127. Response.Write "<div id=""calFondoMes"">No se muestra los calendarios. La consulta no ha generado ningún resultado</div>"
  128. END IF
  129. %>
  130.  
  131. </div>
  132. </body>
  133. </html>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 02/08/2010, 07:13
 
Fecha de Ingreso: abril-2002
Mensajes: 68
Antigüedad: 22 años, 8 meses
Puntos: 0
Respuesta: marcar eventos multidia en calendario

Gracias, voy a por ello !!
__________________
Lordztein
  #12 (permalink)  
Antiguo 06/08/2010, 04:23
 
Fecha de Ingreso: abril-2002
Mensajes: 68
Antigüedad: 22 años, 8 meses
Puntos: 0
Respuesta: marcar eventos multidia en calendario

Muchas gracias !! el codigo perfecto ...
__________________
Lordztein
  #13 (permalink)  
Antiguo 09/08/2010, 03:01
 
Fecha de Ingreso: abril-2002
Mensajes: 68
Antigüedad: 22 años, 8 meses
Puntos: 0
Respuesta: marcar eventos multidia en calendario

todo funciona bastante bien ... excepto un par de cosas :

en esta parte de codigo :
Código:
SQL ="SELECT FechaInicio, FechaFinal, Evento, AnyoMes FROM Calendario2 WHERE AnyoMes = '"& CInt(Anyo) & "/" & CInt(Mes) & "';"
no me recoge anyo/mes , solo me funciona si lo pongo manualmente 2010/08 por ejemplo pero no automatico.

por el resto ..bien
__________________
Lordztein
  #14 (permalink)  
Antiguo 09/08/2010, 04:50
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: marcar eventos multidia en calendario

Hola

Cita:
Iniciado por Lordztein Ver Mensaje
todo funciona bastante bien ... excepto un par de cosas :

en esta parte de codigo :
Código:
SQL ="SELECT FechaInicio, FechaFinal, Evento, AnyoMes FROM Calendario2 WHERE AnyoMes = '"& CInt(Anyo) & "/" & CInt(Mes) & "';"
no me recoge anyo/mes , solo me funciona si lo pongo manualmente 2010/08 por ejemplo pero no automatico.

por el resto ..bien
No entiendo cual puede ser el problema, de hecho acabo de probarlo y funciona perfectamente.
Ahora me ha dado cuenta que no hace falta especificar el tipo de dato, ya se ha hecho anteriormente. Con lo que la consulta quedaría así
Código SQL:
Ver original
  1. SQL ="SELECT FechaInicio, FechaFinal, Evento, AnyoMes FROM Calendario2 WHERE AnyoMes = '"& Anyo & "/" & Mes & "';"
Es todo lo que puedo decirte

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #15 (permalink)  
Antiguo 10/08/2010, 02:29
 
Fecha de Ingreso: abril-2002
Mensajes: 68
Antigüedad: 22 años, 8 meses
Puntos: 0
Respuesta: marcar eventos multidia en calendario

Ya encontre el porque ...

yo en la base guardaba ... 2010/08 ( año y mes )

pero la funcion me da 2010/8 , por eso no me encontraba coincidencias.

Gracias !!
__________________
Lordztein

Etiquetas: calendario, multidia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:24.