Mi primera duda es si has comprobado (con esa sentencia SQL) si te da valores ya que usar el LIKE con fechas y con formato de texto (comillas y %) en Access no es muy buena idea (yo lo he probado y na de na. Claro está que igual no está FECHA como tipo DATE ??¿¿¿)
Tampoco entiendo mucho esto:
Código:
' preparo fecha para conexion a base de datos
if len(imes) = 1 then
xmes = 0&imes
end if
Veo que imes es alfanumerico ya que estas calculando la longitud de una cadena (¿me equivoco?). de todas formas parece que funciona ya que el error te lo hace en el bucle. Aun así comprueba el resultado que suelta ese recordset. Si el campo FECHA es de tipo DATE la sentencia SQL debería ser asi:
sql2 = "SELECT DAY(FECHA) FROM EVENTOS WHERE MONTH(FECHA) = " & xmes & " order by FECHA "
Pero si te funciona bien, no he dicho nada
Veamos esto:
Código:
'conexion a base de datos
dim con2,rs2,sql2,xdia
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 DAY(FECHA) FROM EVENTOS WHERE FECHA LIKE '%/"&xmes&"/%' order by FECHA "
rs2.open sql2,con2,1,2
rs2.movefirst
if not rs2.EOF then dayMagico = Cint(day(rs2.Fields("FECHA")))
'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) = diaMagico then
if iActual = iDia then
'Resaltamos la fecha seleccionada
Response.Write (vbTab & vbTab & "<TD CLASS='diaActual'><B><A HREF='diax.asp?dia="&diaMagico&"'>"& iActual & "</A></B><br></TD>" & vbCrLf)
rs2.MoveNext
else
Response.Write (vbTab & vbTab & "<TD ALIGN='CENTER'><A HREF='diax.asp?dia="& diaMagico&"'>" & iActual & "</A><br></TD>" & vbCrLf)
end if
if not rs2.EOF then
rs2.movenext
diaMagico = day(rs2.Fields("FECHA"))
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
Como puedes ver la mayor diferencia es que evito toparme con el fin de registro (el EOF). Prueba y nos cuentas.
Un saludo