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

Calendario Links - Urgente Ayuda!

Estas en el tema de Calendario Links - Urgente Ayuda! en el foro de ASP Clásico en Foros del Web. hola! hace tres dias estoy peliando con un calendario en asp, al cual le quiero poner links a algunos dias, dependiendo estos de los eventos ...
  #1 (permalink)  
Antiguo 07/02/2006, 20:13
 
Fecha de Ingreso: septiembre-2004
Mensajes: 42
Antigüedad: 19 años, 9 meses
Puntos: 0
Calendario Links - Urgente Ayuda!

hola! hace tres dias estoy peliando con un calendario en asp, al cual le quiero poner links a algunos dias, dependiendo estos de los eventos X que agrego en una base de datos access.
mi problema surge cuando pongo dos eventos en el mismo dia...
en principio tengo este codigo:

Código:
<link rel="stylesheet" type="text/css" href="estilo.css" />

<%
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="calendario.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="calendario.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 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\agenda\agenda.mdb;User Id=;Password=;"
		set rs2 = server.CreateObject("ADODB.Recordset")
		sql2 = "SELECT * FROM EVENTOS WHERE MONTH(FECHA) = " & xmes & " order by FECHA "
		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("FECHA"))))
		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='diax.asp?dia="&diaLink&"'>"& iActual & "</A></B><br></TD>" & vbCrLf)
			if not rs2.eof = true then
			while  (Cint(Trim(day(rs2.Fields("FECHA")))) = 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&"'>" & iActual & "</A><br></TD>" & vbCrLf)
			If Not (rs2.EOF = TRUE) Then
				If (Cint(Trim(day(rs2.Fields("FECHA")))) = 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>
</div>

la parte que esta en negrita es la que modifiqué para hacer funcionar mi idea
como otra alternativa empecé a hacer esto:

Código:
'conexion a base de datos
		dim con2,rs2,sql2,xdia,diaLink
		set con2 = server.CreateObject("ADODB.Connection")
		con2.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\agenda\agenda.mdb;User Id=;Password=;"
		set rs2 = server.CreateObject("ADODB.Recordset")
		sql2 = "SELECT * FROM EVENTOS WHERE MONTH(FECHA) = " & 02 & " order by FECHA "
		rs2.open sql2,con2,1,2
		iRegistros = rs2.RecordCount
		
		Dim registro(),contador
		Redim registro(iRegistros)
		contador = 0
		
		While not rs2.eof 
		registro(contador) = day(rs2.Fields("FECHA"))
		rs2.moveNext
		contador = contador + 1
		wend
hasta ahi voy bien, ahora quiero comparar los elementos del array y si hay elementos iguales quiero eliminar y dejar un único elemento... pero no sé como:
logrando esto dejaría una única lista de días y solucionaría el inconveniente que tengo al principio

GRACIAS POR CUALQUIER AYUDA!...

Ale!
  #2 (permalink)  
Antiguo 07/02/2006, 23:44
 
Fecha de Ingreso: septiembre-2004
Mensajes: 42
Antigüedad: 19 años, 9 meses
Puntos: 0
Arreglé todo con algo muy simple!
en la consulta SQL use "GRUOP BY FECHA"...
y se soluciono todo!

gracias igual ! saludos!
  #3 (permalink)  
Antiguo 10/03/2006, 14:12
 
Fecha de Ingreso: diciembre-2005
Mensajes: 33
Antigüedad: 18 años, 5 meses
Puntos: 0
Como lo arreglaste yio_loko2003. Por que yo puse "SELECT fecha FROM EVENTOS WHERE Month(FECHA) = ' & 03 & ' group by FECHA " y me da bof true. Cosa que esta mal, por que las fechas de los eventos son de marzo (mes 03).
  #4 (permalink)  
Antiguo 10/03/2006, 14:17
 
Fecha de Ingreso: diciembre-2005
Mensajes: 33
Antigüedad: 18 años, 5 meses
Puntos: 0
hola, y este me tira dos veces el registro(tengo dos registros, eso es por que tengo dos registros en el mismo dia) pero quiero que muestre uno solo
"SELECT distinct fecha FROM EVENTOS WHERE FECHA Like '%/"&xmes&"/%' group by Fecha"
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 21:54.