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

filtrar por fechas

Estas en el tema de filtrar por fechas en el foro de ASP Clásico en Foros del Web. por si sirve la cadena de connexion es Código PHP: Set MM_sumer_con_STRING  =  Server . CreateObject ( "ADODB.Connection" )  MM_sumer_con_STRING . Open ( "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="  &  Server ...

  #31 (permalink)  
Antiguo 05/08/2008, 16:25
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 23 años, 1 mes
Puntos: 8
Respuesta: filtrar por fechas

por si sirve

la cadena de connexion es

Código PHP:
Set MM_sumer_con_STRING Server.CreateObject("ADODB.Connection"
MM_sumer_con_STRING.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" Server.MapPath("sumer.mdb")) 
  #32 (permalink)  
Antiguo 05/08/2008, 16:27
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 23 años, 1 mes
Puntos: 8
Respuesta: filtrar por fechas

error devuelto

Microsoft OLE DB Provider for ODBC Drivers (0x80040E0C)
No se estableció ningún texto de comando para el objeto de comando.
/intranet_esihuman/z_prova_total.asp, línea 24

linea 24 es
set rs = oConn.execute(sql)

(lo he puesto en un arxivo nuevo y limpio)
  #33 (permalink)  
Antiguo 05/08/2008, 16:28
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: filtrar por fechas

Entonces sustituye donde pone oConn por MM_sumer_con_STRING (el nombre de la variable me lió) y borra la instancia oConn (el set oConn = server.CreateObject.... )


¿la variable sql va vacia? comprueba su valor....

mejor.....

ponme el código completo de la página
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #34 (permalink)  
Antiguo 06/08/2008, 00:13
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 23 años, 1 mes
Puntos: 8
Respuesta: filtrar por fechas

me da el error

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 1.
/intranet_esihuman/z_prova_total.asp, línea 24

en la linea 24 tengo


te pongo el codigo tal y como lo tenia ahora

Código PHP:
<%
sql "select int(dateDiff(""d"",DATA_NAIXEMENT, date())/365) as agno FROM CURRICULUMS"
'set oConn=Server.CreateObject("ADODB.Connection")
    '
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open MM_sumer_con_STRING
set rs 
MM_sumer_con_STRING.execute(sql)
 
do while 
not rs.EOF 
      response
.write(rs("agno") & "<br />")
      
rs.moveNext()
loop
rs
.close()
set rs nothing
response
.end()
%> 
  #35 (permalink)  
Antiguo 06/08/2008, 02:37
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: filtrar por fechas

Quitale esta linea:

oConn.Open MM_sumer_con_STRING

y vuelvelo a correr.


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #36 (permalink)  
Antiguo 06/08/2008, 05:51
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 23 años, 1 mes
Puntos: 8
Respuesta: filtrar por fechas

me da el error

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 1.
/intranet_esihuman/z_prova_total.asp, línea 25

te copio todo el codigo otra vez

Código PHP:
<%
sql "select int(dateDiff(""d"",DATA_NAIXEMENT, date())/365) as agno FROM CURRICULUMS"
'sql = "select *  FROM CURRICULUMS"
'
set oConn=Server.CreateObject("ADODB.Connection")
    
'set rs=Server.CreateObject("ADODB.Recordset")
'
oConn.Open MM_sumer_con_STRING
set rs 
MM_sumer_con_STRING.execute(sql)
 
do while 
not rs.EOF 
      response
.write(rs("agno") & "<br />")
      
rs.moveNext()
loop
rs
.close()
set rs nothing
response
.end()
%> 
  #37 (permalink)  
Antiguo 06/08/2008, 06:07
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: filtrar por fechas

¿Es ese todo el código? Es decir, ¿has puesto el archivo de inclusión donde defines MM_sumer_con_STRING? En caso de que respondas a la primera pregunta SI y a la segunda NO, pon estas dos lineas al principio del código:

Set MM_sumer_con_STRING = Server.CreateObject("ADODB.Connection")
MM_sumer_con_STRING.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("sumer.mdb"
))


Por cierto, ¿el SELECT * FROM CURRICULUMS te funciona?

Un saludo

__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #38 (permalink)  
Antiguo 06/08/2008, 06:15
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 23 años, 1 mes
Puntos: 8
Respuesta: filtrar por fechas

todo el codigo

Código PHP:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--
#include file="Connections/sumer_con.asp" -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>

<
title><%=nompagina%></title>

<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Documento sin t&iacute;tulo</title>
</
head>
<
body>
<%
sql "select int(dateDiff(""d"",DATA_NAIXEMENT, date())/365) as agno FROM CURRICULUMS"
'sql = "select *  FROM CURRICULUMS"
'
set oConn=Server.CreateObject("ADODB.Connection")
    
'set rs=Server.CreateObject("ADODB.Recordset")
'
oConn.Open MM_sumer_con_STRING
set rs 
MM_sumer_con_STRING.execute(sql)
 
do while 
not rs.EOF 
      response
.write(rs("agno") & "<br />")
      
rs.moveNext()
loop
rs
.close()
set rs nothing
response
.end()
%>
</
body>
</
html

y el select * from curriculums si que funciona
  #39 (permalink)  
Antiguo 06/08/2008, 07:32
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: filtrar por fechas

He emulado todo en mi server (base de datos, cadena de conexión, etc) y funciona correctamente. Solo se me ocurre un posible problema: la versión Access de la BD. Hay 4: 1997, 2000, 2002-2005 o 2007. La función dateDiff esta implementada desde 2000 o la 2002-2005 y es posible que cambie algun parámetro en ellas.

Si sigues interesado en esta forma de obtener la edad te recomiendo que abras la base de datos en tu Access del PC, crees una consulta y pegues la sentencia SQL a ver si te funciona correctamente. Ya te digo, a mi me funciona tanto en el entorno de Access como a traves de ASP VBScript.


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #40 (permalink)  
Antiguo 06/08/2008, 08:21
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 23 años, 1 mes
Puntos: 8
Respuesta: filtrar por fechas

Yo uso Access 2003

te pongo una iamgen de tomo tengo diseñada la tabla

haver si es como tienes tu diseñado el campo fecha_naixement

http://www.esigual.com/DISENOTABLA.JPG

he provado de hacer esta sentencia sobre el access

SELECT * FROM curriculums WHERE DateDiff("yyyy",DATA_NAIXEMENT, Date()) >= 18 and DateDiff("yyyy",DATA_NAIXEMENT, Date()) <= 20;

y me ha funcionado a la perfeccion

no se por donde puede venir el problema
  #41 (permalink)  
Antiguo 06/08/2008, 13:11
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: filtrar por fechas

Lo siento, llevo todo el dia peleandome con Delphi

Pues si, es exactamente como lo tengo yo (bueno, con menos campos pero eso da igual). Lo único que nos queda por chequear es la cadena de conexión aunque no deberia de fallar por ahí.

Yo uso OLEDB:

Provider=Microsoft.Jet.OLEBD.4.0; Data Source=dir_de_la_base_de_datos;

Tu usas ODBC (MSDASQL) usando una conexión DSN less:

Provider=MSDASQL;Driver={Microsoft Access Driver (*.mdb)}; DBQ=dir_de_labase_de_datos;

(puedes evitarte el Provider=MSDASQL pero si lo pones, no pongas ningun espacio entre el ; y Driver)


DSN Less esta muy extendido entre los server (es mas antiguo que OLEDB) y OLEDB es mas potente pero requiere tener instalado en el server el MDAC 2.0 o superior.


Un saludo

__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #42 (permalink)  
Antiguo 06/08/2008, 15:18
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 23 años, 1 mes
Puntos: 8
Respuesta: filtrar por fechas

bue te lo puedes creer?

con esto no me funciona

Dim MM_sumer_con_STRING
Set MM_sumer_con_STRING = Server.CreateObject("ADODB.Connection")
MM_sumer_con_STRING.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("sumer.mdb"))
%>

pero con este si

Set MM_sumer_con_STRING = Server.CreateObject("ADODB.Connection")
'Conn.Mode = adModeReadWrite
MM_sumer_con_STRING.Open("Provider=Microsoft.Jet.O LEDB.4.0; Data Source=" & Server.MapPath("sumer.mdb"))

que diferencia hay entre el microsoft.jet.OLEDB y el Microsoft Acces driver?
  #43 (permalink)  
Antiguo 06/08/2008, 15:28
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 23 años, 1 mes
Puntos: 8
Respuesta: filtrar por fechas

con el Microsoft.Jet.O LEDB.4.0 es incopatible lo de

CacheSize ?
  #44 (permalink)  
Antiguo 06/08/2008, 15:33
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: filtrar por fechas

jajajajajaja, bloody DSN less (perdon por la expresión). La verdad es que yo no te recomiendo paginar usando las opciones del recordset. Me gusta más hacerlo por SQL pero bue... es mas complicado, si. Supongo que si, que se puede. Todo es cuestion de probar...

Respecto a la diferencia te lo expliqué en el post anterior. Uno es por OLEDB y el otro por ODBC (más antiguo).


Un saludo y me alegro que te funcione
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #45 (permalink)  
Antiguo 06/08/2008, 15:49
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 23 años, 1 mes
Puntos: 8
Respuesta: filtrar por fechas

ahora que funciona he probado

el
int(dateDiff("d", Fecha_nacimiento, date())/365) > 18 and int(dateDiff("d", Fecha_nacimiento, date())/365) < 18


y me saca datos erroneos

tambien he probado el
ELECT * FROM curriculums WHERE DateDiff(""yyyy"", data_naixement, Date()) >= 18 and DateDiff(""yyyy"", data_naixement, Date()) <= 18;

me saca esto

02/06/1990 18
09/08/1990 17
06/08/1990 18

el del 9/08/1990 no es correcto por que aun tiene 17 años
  #46 (permalink)  
Antiguo 06/08/2008, 16:10
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 23 años, 1 mes
Puntos: 8
Respuesta: filtrar por fechas

con el datediff del dia /365 me cuenta hasta la mitad del mes
  #47 (permalink)  
Antiguo 06/08/2008, 17:44
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: filtrar por fechas

Si, es un problema de los años bisiestos. Dejame hasta mañana y te busco una solucion.


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #48 (permalink)  
Antiguo 07/08/2008, 10:09
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: filtrar por fechas

Creo que lo he conseguido. Discurramos:

Un año bisiesto es aquel que tiene un dia mas cada 4 años pero cada 400 años hay que eliminar 3 años. Es decir, un año bisiesto son todos los divisibles por 4 y por 400 menos los que son divisibles por 100.

Es decir:

1 año dura 365+1/4-3/400=365,2425 días

Por lo cual:

SELECT * FROM CURRICULUMS WHERE int(dateDiff("d", Fecha_nacimiento, date())/(365+1/4-3/400)) >= 18 and int(dateDiff("d", Fecha_nacimiento, date())/(365+1/4-3/400)) <= 20


Esto te dará exactamente la edad correcta.


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #49 (permalink)  
Antiguo 07/08/2008, 14:07
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 23 años, 1 mes
Puntos: 8
Respuesta: filtrar por fechas

muchas gracias

ha costado pero al final lo has conseguido

MUCHAS GRACIAS!!
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 01:07.