Urgente asp fechas

Estoy desarrollando un sitio basando flash asp. Y tengo un problema cuando trabajo con fechas. Por ejemplo en unos de los formularios me insertan dos fechas y yo tengo que devolver los registros que hay entre esas dos fechas y mi código es este:
<%@ Language=VBSCRIPT %>
<%Response.Expires=-10000
response.addHeader "pragma", "no-cache"
response.addHeader "cache-control","private"
Response.CacheControl ="no-cache"
%>
<%
dim oConn,strSQL,objRS,FechaInicial,FechaFinal
Set oConn= Server.CreateObject ("ADODB.Connection")
oConn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" + Server.MapPath("maemba.mdb"))
FechaInicial = cdate(request("FFechaInicial"))
FechaFinal = cdate (request("FFechaFinal"))
If FechaFinal = "" Then
FechaFinal = Date()
End if
strSQL = "SELECT * FROM Vencimiento WHERE Fecha_vencimiento >="&FechaInicial&" and Fecha_vencimiento <="&FechaFinal&""
Set objRS = oConn.Execute(strSQL)
x=0
While (not objRS.Eof)
Response.Write "&FNum_pago"&x&"=" & objRS("Num_pago") & "&FConcepto"&x&"=" & objRS("Concepto") & "&FFecha_vencimiento"&x&"=" & objRS("Fecha_vencimiento") & "&FImporte"&x&"=" & objRS("Importe")
objRS.MoveNext
x=x+1
wend
Response.Write "&TotReg="&x-1
oConn.Close
Set oConn=nothing
Set objRS=nothing
%>
Y lo que me devuelve este código es TotReg=-1 es decir que no entra en el bucle porque la consulta no devuelve nada cuando si que hay valores en la base de datos (trabajo con Access).
Saludos de Lovezno, mi e-mail es [email protected] si me pudieras enviar un fichero donde este problema estuviera solucionado, te estaría muy muy agradecido, me harías un grandísimo favor de verdad.

3 respuestas

Respuesta
1
El problema creo que está en la consulta. Prueba con:
strSQL = "SELECT * FROM Vencimiento WHERE Fecha_vencimiento BETWEEN #"&FechaInicial&"# AND #"&FechaFinal&"#"
El formato de fecha para la búsqueda creo que debe ser el americano (MM/DD/AAAA), por lo que seguramente deberás convertir tus fechas.
Muy buenas efectivamente era la consulta,
Ese problema gracias a ti lo he solucionado pero ahora tengo otro que es el siguiente:
Tengo un campo de entrada donde el usuario puede meter una fecha o nada. Cuando no introduce nada quiero poner la fecha del sistema que se hace con la función Date(). Pero el problema es que me devuelve la fecha en formato americano. Y la pregunta es como formateo la fecha para que me la devuelva bien.
Saludos de Lovezno y muchas gracias por tu ayuda
Si devuelve la fecha en formato americano es por la configuración regional del servidor. Si no puedes cambiar ese parámetro, separa los valores de día y mes y dales la vuelta.
Buenas de nuevo y perdona que te agobie tanto,
Me podrías indicar como puedo hacer para cambiar la configuración regional del servidor o en su defecto como separar los valores de día y mes y dales la vuelta.
Saludos de Lovezno y muchas gracias por tú gran ayuda.
La "Condiguración regional" está en el Panel de Control (Inicio/Configuración/Panel de Control/Configuración regional).
Para manipular la fecha, tienes en VBScript las funciones Day, Month y Year, que pasándoles una fecha como parámetro te devuelven respectivamente el día, el mes y el año. Por ejemplo, para pasar una fecha de formato americano a europeo, puedes hacerlo así:
Fecha=Day(Fecha) & "/" & Month(Fecha) & "/" & Year(Fecha)
Respuesta
1
Necesito tener acceso al ASP vía FTP y HTML para ver lo que pasa y repararlo, así es algo complicado
Respuesta
1
Sucede que a veces tuve problemas entre access y asp con las fechas, ya sea porque tu sistema esta en español y access en ingles o ...
sabias que la fecha 13/01/2003 es valida. Claro, seria el 13 de enero del 2003.
Si escribes 01/13/2003 también es valida para vbscript, y seria el 13 de enero del 2003.
La solución que encontré para comparar fechas en bases de datos, ya sea access o ms sql server o ... es formatear la fecha en formato yyyymmdd
Digamos, que para representar la fecha anterior, la formateo así:
year(tdate) & right("0"&month(tdate),2) & right("0"&day(tdate),2)
El resultado es
20030113
En la consulta access tienes que escribir
select * from tabla where fecha >= '20030113'
Suerte
Nico

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas