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

Calendario y Fechas en ASP

Estas en el tema de Calendario y Fechas en ASP en el foro de ASP Clásico en Foros del Web. Estoy intentando adaptar el calendario en ASP de ASP Tutor ( http://asptutor.com/asp/vart.asp?id=104 ) . Quiero que los días del més sólo tengan hiperlink si coinciden ...
  #1 (permalink)  
Antiguo 14/03/2003, 05:18
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 23 años, 2 meses
Puntos: 2
Calendario y Fechas en ASP

Estoy intentando adaptar el calendario en ASP de ASP Tutor (http://asptutor.com/asp/vart.asp?id=104) .

Quiero que los días del més sólo tengan hiperlink si coinciden con las fechas almacenadas en una base de datos. (El código de Asp Tutor muestra los días con hiperlink siempre)

Para ello abro un recordset con todos los registros de la tabla, y trato de hacer (sin conseguirlo, claro) un bucle para que muestre los días con hiperlinks sólo si coinciden con las fechas de la base de datos.

¿Podéis ayudarme?

La parte del código de ASP Tutor donde muestra los días es este:

Código:
For Row = 0 to 5
	For Col = 0 to 6
		If Row = 0 and Col < FirstDay then
			response.write "<td>&nbsp;</td>"
		elseif CurrentDay > LastDay(MyMonth, MyYear) then
			response.write "<td>&nbsp;</td>"
		else
			response.write "<td"
			if cInt(MyYear) = Year(Date) and cInt(MyMonth) = Month(Date) and CurrentDay = Day(Date) then 
				response.write " class='calCeldaResaltado' align='center'>"
			else 
				response.write " align='center'>"
			end if
			response.write "<a href='" & URLDestino & "?day=" & CurrentDay _
						& "&month=" & MyMonth & "&year=" & MyYear & "'>" 
			if cInt(MyYear) = Year(Date) and cInt(MyMonth) = Month(Date) and CurrentDay = Day(Date) then 
				Response.Write "<div class='calResaltado'>" 
			else
				Response.Write "<div class='calSimbolo'>" 
			end if
			Response.Write CurrentDay & "</div></a></td>" 			
                CurrentDay = CurrentDay + 1
		End If
	Next
	response.write "</tr>"
Next
Gracias.
  #2 (permalink)  
Antiguo 17/03/2003, 12:17
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 23 años, 2 meses
Puntos: 2
mmmm....

¿No hay ningún maestro que me una pistilla por lo menos?
  #3 (permalink)  
Antiguo 18/03/2003, 17:18
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 22 años, 11 meses
Puntos: 22
Pruba a cambiar lo que has puesto en negrita por lo siguiente (modificando lo que sea necesario, como por ejemplo los siguientes datos):

'conn--> nombre de la conexión a la Base de Datos
'fecha--> nombre del campo de la BD donde guardas las fechas
'My [Year|Month|Day] --> para pintar el dia en el calendario (los días del mes)
'calendario --> nombre de la tabla donde guardas las fechas


sqlstr="SELECT * FROM calendario WHERE month(fecha)=" & Month(MyMonth) & " AND year(fecha)=" & Year(MyYear) & " AND day(fecha)=" & day(MyDay)

set RS = conn.execute(sqlstr)

If RS.EOF Then

if cInt(MyYear) = Year(Date) and cInt(MyMonth) = Month(Date) and CurrentDay = Day(Date) then
Response.Write "<div class='calResaltado'>"
else
Response.Write "<div class='calSimbolo'>"
end if
Response.Write CurrentDay & "</div></td>"

Else

response.write "<a href='" & URLDestino & "?day=" & CurrentDay & "&month=" & MyMonth & "&year=" & MyYear & "'>"

if cInt(MyYear) = Year(Date) and cInt(MyMonth) = Month(Date) and CurrentDay = Day(Date) then
Response.Write "<div class='calResaltado'>"
else
Response.Write "<div class='calSimbolo'>"
end if
Response.Write CurrentDay & "</div></a></td>"

End If

'---------------

No sé si te funcionará, por que lo he escrito ahora mismo. Adaptalo según creas necesario.
Espero que te ayude en algo...
Saludos!!
  #4 (permalink)  
Antiguo 28/03/2003, 14:08
Avatar de mrgubu  
Fecha de Ingreso: febrero-2002
Ubicación: Granada
Mensajes: 431
Antigüedad: 23 años, 2 meses
Puntos: 2
Gracias all-ill por tu ayuda y disculpa por el retraso en contestar, no he podido antes por líos de trabajo.

He probado a adaptar el código que propones y no me funciona, no sé por qué. Con tu código, la página no da errores, pero al ejecutarse no se muestra como hipervínculo ningún día, todos aparecen como texto llano.

La conexión la tuve que hacer con

RS.Open strSQL, strCon, 3

porque el execute me daba error. ¿No será por esto que no va correcto, verdad?

Es una pena que no voy a poder poner el calendario, porque claro, se podría hacer fácilmente un bucle en la pagina de destino de forma que si no hay eventos para una fecha, pues se muestre "No hay eventos para la fecha", pero esto sería muy molesto si aparece varias veces. Lo mejor sería que sólo tuvieran hipervínculo las fechas para las que hubiera eventos.
  #5 (permalink)  
Antiguo 28/10/2003, 21:48
Avatar de affv  
Fecha de Ingreso: diciembre-2002
Ubicación: Ahora aqui
Mensajes: 485
Antigüedad: 22 años, 5 meses
Puntos: 0
Yo he estado intentando hacer exactamente lo mismo que mrgubu y no he podido talvez alguien mas nos pueda orientar para poder terminarlo.

Gracias
__________________
Todo tiene un comienzo y un fin!!
Postea tus proyectos
  #6 (permalink)  
Antiguo 28/10/2003, 22:49
Avatar de affv  
Fecha de Ingreso: diciembre-2002
Ubicación: Ahora aqui
Mensajes: 485
Antigüedad: 22 años, 5 meses
Puntos: 0
El codigo que yo tengo para el calendario es el siguiente

<style>
<!--
.Title { font-family: Tahoma; font-size: 10pt; font-weight: bold }
.Text { font-family: Tahoma; font-size: 8pt; font-weight: bold }
.Smalltext { font-family: Tahoma; font-size: 8pt }

-->
</style>
<%
MyMonth = Month(Date)
MyYear = Year(Date)
FirstDay = WeekDay(DateSerial(MyYear, MyMonth, 1)) -1
CurrentDay = 1

Function LastDay(MyMonth, MyYear)
Select Case MyMonth
Case 1, 3, 5, 7, 8, 10, 12
LastDay = 31
Case 4, 6, 9, 11
LastDay = 30
Case 2
If IsDate(MyYear & "-" & MyMonth & "-" & "29") Then LastDay = 29 Else LastDay = 28
Case Else
LastDay = 0
End Select
End Function



Response.Write "<table border='0' cellpadding='0' cellspacing='0' width='130'>"
Response.Write "<tr>"
Response.Write "<td align='center' width='18'><p class='Text'>D</td>"
Response.Write "<td align='center' width='18'><p class='Text'>L</td>"
Response.Write "<td align='center' width='18'><p class='Text'>M</td>"
Response.Write "<td align='center' width='18'><p class='Text'>M</td>"
Response.Write "<td align='center' width='18'><p class='Text'>J</td>"
Response.Write "<td align='center' width='18'><p class='Text'>V</td>"
Response.Write "<td align='center' width='18'><p class='Text'>S</td>"
Response.Write "</tr>"
Response.Write "<tr>"
For Row = 0 to 5
For Col = 0 to 6
If Row = 0 and Col < FirstDay Then
Response.Write "<td>&nbsp;</td>"
ElseIf CurrentDay > LastDay(MyMonth, MyYear) Then
Response.Write "<td>&nbsp;</td>"
Else
If cInt(MyYear) = Year(Date) and cInt(MyMonth) = Month(Date) and CurrentDay = Day(Date) Then
Response.write "<td align='center' width='18' bgcolor='#FFFF00'><p class='Smalltext'>"&CurrentDay&"</td>"
Else
Response.Write "<td align='center' width='18'><p class='Smalltext'>"&CurrentDay&"</td>"
End If
CurrentDay = CurrentDay + 1
End If
Next
Response.Write "</tr>"
Next
Response.Write "</table>"
%>

Talvez alguien me lo puede mejorar, puesto que yo lo estoy haciendo lo con poco que se de ASP
__________________
Todo tiene un comienzo y un fin!!
Postea tus proyectos
  #7 (permalink)  
Antiguo 29/10/2003, 09:57
Avatar de xlugo2002  
Fecha de Ingreso: noviembre-2002
Ubicación: Puebla, México
Mensajes: 474
Antigüedad: 22 años, 6 meses
Puntos: 0
comparacio...

pos nomas has un select donde tu restriccion sea el mes actual !!

ahora, del campo fecha de tu BD descomponla y obten solamente el dia del la fecha actual.. ok... variable: diaBD

diaBD = Recorset.Fields("fecha") ***** utiliza una funcion que te de el dia
(esto lo pones dentro del bucle)

asi cuando, si estas por ejemplo en octubre del 2003 tendras 1 hasta 31 dias...

cuando construyes el calendario pos sera en un blucle 1 to 31 ......

i=1
While....
i=i+1
.......
Wend

entonces comparas: If i = diaBD Then.....Else... End If

y ya !!!!
  #8 (permalink)  
Antiguo 30/10/2003, 11:32
Avatar de affv  
Fecha de Ingreso: diciembre-2002
Ubicación: Ahora aqui
Mensajes: 485
Antigüedad: 22 años, 5 meses
Puntos: 0
Pues no si se podrias ayudarme a explicarme o mas bien a terminar mi codigo porque la verdad he estado probando con el For y no he logrado terminarlo hice la codigo segun lo entendi de tu explicacion pero nada..

Ayuda!!
__________________
Todo tiene un comienzo y un fin!!
Postea tus proyectos
  #9 (permalink)  
Antiguo 30/10/2003, 14:56
Avatar de affv  
Fecha de Ingreso: diciembre-2002
Ubicación: Ahora aqui
Mensajes: 485
Antigüedad: 22 años, 5 meses
Puntos: 0
Pues no se si a alguien le sirva, pero yo he logrado hacerlo de la siguiente manera:

<style>
<!--
.Title { font-family: Tahoma; font-size: 10pt; font-weight: bold }
.Text { font-family: Tahoma; font-size: 8pt; font-weight: bold }
.Smalltext { font-family: Tahoma; font-size: 8pt }
-->
</style>
<%
PopupFecha = Year(Date)&"/"&Month(Date)&"/"&Day(Date)
Popupdb="Popups"
cn="DRIVER={Microsoft Access Driver (*.mdb)};"
cn=cn & "DBQ=" & server.mappath(Popupdb)

MyDate = Year(Date)&"/"&Month(Date)&"/"&Day(Date)
MyMonth = Month(Date)
MyYear = Year(Date)
FirstDay = WeekDay(DateSerial(MyYear, MyMonth, 1)) -1
CurrentDay = 1

Function LastDay(MyMonth, MyYear)
Select Case MyMonth
Case 1, 3, 5, 7, 8, 10, 12
LastDay = 31
Case 4, 6, 9, 11
LastDay = 30
Case 2
If IsDate(MyYear & "-" & MyMonth & "-" & "29") Then LastDay = 29 Else LastDay = 28
Case Else
LastDay = 0
End Select
End Function



Response.Write "<table border='0' cellpadding='0' cellspacing='0' width='130'>"
Response.Write "<tr>"
Response.Write "<td align='center' width='18'><p class='Text'>D</td>"
Response.Write "<td align='center' width='18'><p class='Text'>L</td>"
Response.Write "<td align='center' width='18'><p class='Text'>M</td>"
Response.Write "<td align='center' width='18'><p class='Text'>M</td>"
Response.Write "<td align='center' width='18'><p class='Text'>J</td>"
Response.Write "<td align='center' width='18'><p class='Text'>V</td>"
Response.Write "<td align='center' width='18'><p class='Text'>S</td>"
Response.Write "</tr>"
Response.Write "<tr>"
For Row = 0 to 5
For Col = 0 to 6
If Row = 0 and Col < FirstDay Then
Response.Write "<td>&nbsp;</td>"
ElseIf CurrentDay > LastDay(MyMonth, MyYear) Then
Response.Write "<td>&nbsp;</td>"
Else
If cInt(MyYear) = Year(Date) and cInt(MyMonth) = Month(Date) and CurrentDay = Day(Date) Then
Response.write "<td align='center' width='18' bgcolor='#FFFF00'><p class='Smalltext'><b>"&CurrentDay&"</b></td>"
Else
Dia = Year(Date)&"/"&Month(Date)&"/"&CurrentDay
Set rs = Server.CreateObject("Adodb.Recordset")
Sql = "Select * "
Sql = Sql & "From Popups "
Sql = Sql & "Where Fecha Like '"&Dia&"'"
rs.Open Sql,Cn
If rs.Eof = False Then
Response.Write "<td align='center' width='18' bgcolor='#FFFF00'><p class='Smalltext'><a href='calendario.asp?Fecha=2003/10/"&CurrentDay&"'>"&CurrentDay&"</a></td>"
Else
Response.Write "<td align='center' width='18'><p class='Smalltext'>"&CurrentDay&"</td>"
End If
rs.Close
End If
CurrentDay = CurrentDay + 1
End If
Next
Response.Write "</tr>"
Next
Response.Write "</table>"
%>

Es muy posible que el codigo tenga una que otra cosa que se podria haber evitado pero para eso mismo lo posteo para que otra persona lo termine de retocar
__________________
Todo tiene un comienzo y un fin!!
Postea tus proyectos
  #10 (permalink)  
Antiguo 26/02/2004, 13:27
 
Fecha de Ingreso: octubre-2003
Ubicación: ***
Mensajes: 152
Antigüedad: 21 años, 6 meses
Puntos: 0
una solucion

para igualar las fechas utilizo esto

function suma_fecha(fecha)

dia=day(fecha)
mes=month(fecha)
anio=year(fecha)
fecha_suma= anio * 10000 + mes*100 + dia

suma_fecha=int(fecha_suma)

end function

fecha1="12/02/2004"
fecha2="12/02/2004"

fecha_sum1=suma_fecha(fecha1)
fecha_sum2=suma_fecha(fecha2)

if fecha_sum1=fecha_sum2 then
los q quieras
end if

espero te sirva..
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 18:14.