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. hola tengo una base de datos Access con un campo que es "fecha_nacimiento" lo que quiero es filtrar por ese campo pero en el form ...

  #1 (permalink)  
Antiguo 04/08/2008, 01:47
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
filtrar por fechas

hola tengo una base de datos Access con un campo que es "fecha_nacimiento"

lo que quiero es filtrar por ese campo pero en el form le pongo la edat que tendria que tener la persona


y despues hago la fecha por ejemplo una persona que tenga 20 años la fecha seria 01/01/1988 al 31/12/1988

pero que pasa es que lo quiero calcular con la fecha de hoy (hoy estamos a 04/08/2008) ebtonces si una persona ha nacido el día 15/08/1988 no tendra 20 años si no que tendra 19

se entiende?

es que ya no se por donde pillar el tema

gracias
  #2 (permalink)  
Antiguo 04/08/2008, 04:02
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

Hola,

¿Por que no usas la función Datediff?

Dicha función te devuelve la diferencia que hay entre dos fechas:

numagnos = datediff("yyyy", Date(), Cdate("15/08/1988"))


http://www.w3schools.com/vbScript/func_datediff.asp


Cuando trabajes con fechas, horas, etc te recomiendo que especifiques el lcid que vas a usar al rpincipio de la página:

Session.lcid = 1034

http://msdn.microsoft.com/en-us/library/0h88fahh.aspx


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

pero lo que tengo guardado en el campo fecnha_nacimiento es en formato dd/mm/aaaa

por ejemplo una persona que haya nacido el 02/06/1977 hoy tendra 31
pero una persona que haya nacido el 29/12/1977 hoy tendra 30 años


con el campo del formulario lo que hago es lo siguiente

recojo el campo_de y el campo_a
el campo_de tiene un valor de 30 y el campo_a de 31

lo que hago es
edad_inicial = day(date)&"/"&month(date)&"/"&(year(date) - (campo_de)

edat_final = day(date)&"/"&month(date)&"/"&(year(date) - (campo_a)

lo que me devuelve los valores de

edad_inicial = 04/08/1978
edad_final = 04/08/1977

me endria que sacar los dos registros no? con un bettwen? o como lo hago...
  #4 (permalink)  
Antiguo 04/08/2008, 11:47
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

A ver si lo entiendo. ¿Lo que quieres es buscar en la base de datos todos los registros que cumplen años hoy? o bien, ¿sacar los registros entre un intervalo de edad?
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #5 (permalink)  
Antiguo 04/08/2008, 13:12
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Respuesta: filtrar por fechas

quiero buscar todos los usuarios que tengan por ejemplo de 30 a 31 años
  #6 (permalink)  
Antiguo 04/08/2008, 14:14
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

Usando SQL (de Access/MSSQL) lo haria asi:

SELECT *
FROM Tabla
WHERE
DateDiff("yyyy",Fecha_nacimiento, Date()) > 29
and
DateDiff("yyyy",Fecha_nacimiento, Date()) < 32;



NOTA: Lo he hecho al voleo pero no creo que sea muy diferente



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

ya lo provaré
  #8 (permalink)  
Antiguo 04/08/2008, 14:27
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

Cita:
Iniciado por ^engonga^ Ver Mensaje
ya lo provaré

¿y?

---- EDIT -----

Otra opción es usarlo por dias y dividir entre 365. Es imperfecto pero será mas exacto:

int(dateDiff("d", Fecha_nacimiento, date())/365) > 29 and int(dateDiff("d", Fecha_nacimiento, date())/365) < 32

No tenemos en cuenta los años bisiestos pero es muy posible que no influya demasiado.

Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -

Última edición por tammander; 04/08/2008 a las 14:39
  #9 (permalink)  
Antiguo 04/08/2008, 14:47
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Respuesta: filtrar por fechas

el fecha_de_nacimiento lo consideras como el nombre del campo de la base de datos no?

he provado las dos cosas y o funcionan
  #10 (permalink)  
Antiguo 04/08/2008, 14:50
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Respuesta: filtrar por fechas

es que me vuelvo loco creando la sentencia SQL
  #11 (permalink)  
Antiguo 04/08/2008, 14:56
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

Si, supongo que es el campo de tipo Date/Time donde guardas las fechas de nacimiento. ¿Es Date/Time verdad?

¿te sale algun error o simplemente no hay registros con esos criterios?


Otra cosa, el servidor está configurado para ese formato de fecha (dd/mm/yyyy)?
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -

Última edición por tammander; 04/08/2008 a las 15:01
  #12 (permalink)  
Antiguo 04/08/2008, 15:16
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Respuesta: filtrar por fechas

me sale que no hay registros y de haberlos los hay

el servidor esta configurado dd/mm/aaaa
  #13 (permalink)  
Antiguo 04/08/2008, 15:17
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Respuesta: filtrar por fechas

los campos donde guardo la fecha son tipu date/time en formato de fecha corta
  #14 (permalink)  
Antiguo 04/08/2008, 15:37
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

No lo entiendo, acabo de probarlo y funciona

Haz una consulta de selección sin criterios usando la fórmula, a ver que sale:

SELECT int(dateDiff("d", Fecha_nacimiento, date())/365) as agnos
FROM Tabla;

Donde Fecha_nacimiento es el campo en cuestión.
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #15 (permalink)  
Antiguo 04/08/2008, 15:51
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Respuesta: filtrar por fechas

el problema es que la sentencia sql la hago dinamicamente


por que recibo datos de otros campos


lo que es la pre_SQL es donde tendria que poner lo que me dice?


Código PHP:
if categoria_prof <> "totes" or sexe <> "tots" or poblacio <>"totes" or comarca <> "totes" or tipu_jornada <> "totes" or edat_de <> or edat_a <> or pretecon_de <> or pretecon_a <> or actpas <> "" or alerta <> "0" then
coletilla 
" "
sql ="select * FROM CURRICULUMS where"

If categoria_prof <> "totes" Then
 sql 
sql coletilla "( categoria_prof1 = '" categoria_prof "' or categoria_prof2 = '" categoria_prof "' or categoria_prof3 = '" categoria_prof "')"
 
coletilla " and "
End If
If 
edat_de <> or edat_a <>0 Then
 
'sql = sql & coletilla & " data_naixement between #"& edat_inicial &"# and  #"& edat_final&"#"
 sql = sql & coletilla & pre_SQL
 coletilla = " and "
End If
If poblacio <> "totes" Then
 sql = sql & coletilla & " poblacio = '"&poblacio&"'"
 coletilla = " and "
End If
If comarca <> "totes" Then
 sql = sql & coletilla & " comarca = '"&comarca&"'"
 coletilla = " and "
End If
If tipu_jornada <> "totes" Then
 sql = sql & coletilla & " jornada = '"&tipu_jornada&"'"
 coletilla = " and "
End If
If pretecon_de <> 0 and pretecon_a <> 0 Then
 '
sql sql coletilla " pretecon  between "&pretecon_de &" and  "&pretecon_a
 sql 
sql coletilla " (pretecon => "&pretecon_de &" and  pretecon >="&pretecon_a&")"
 
coletilla " and "
End If
If 
sexe <> "tots"  Then
 sql 
sql coletilla " sexe = '"&sexe&"'"
 
coletilla " and "
End If
If 
actpas <> "" Then
 sql 
sql coletilla " actiu_pasiu = '"&actpas&"'"
 
coletilla " and "
End If
If 
alerta <> "0" Then
 sql 
sql coletilla " alerta = '"&alerta&"'"
 
coletilla " and "
End If
 
sql sql " order by codi"
else
sql ="select * FROM CURRICULUMS  ORDER BY CODI"
end if 
  #16 (permalink)  
Antiguo 04/08/2008, 18:02
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

Si, asi:

Código:
If edat_de > 0 then
        sql = sql & coletilla & "int(dateDiff("d", data_naixament, date())/365) >= " & edat_de
        coletilla = " and "
end if
If edat_a > 0 then
        sql = sql & coletilla & "int(dateDiff("d", data_naixament, date())/365) <= " & edat_a
        coletilla = " and "
end if
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #17 (permalink)  
Antiguo 05/08/2008, 00:06
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Respuesta: filtrar por fechas

me da el error

Error de compilación de Microsoft VBScript (0x800A0401)
Se esperaba un final de instrucción
/intranet_esihuman/cand_busca_total.asp, línea 458, columna 39
sql = sql & coletilla & "int(dateDiff("d", data_naixament, date())/365) >= " & edat_de
--------------------------------------^
  #18 (permalink)  
Antiguo 05/08/2008, 02:30
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

Cierto, las dobles comillas dentro de una cadena.

Código:
If edat_de > 0 then
        sql = sql & coletilla & "int(dateDiff(""d"", data_naixament, date())/365) >= " & edat_de
        coletilla = " and "
end if
If edat_a > 0 then
        sql = sql & coletilla & "int(dateDiff(""d"", data_naixament, date())/365) <= " & edat_a
        coletilla = " and "
end if
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #19 (permalink)  
Antiguo 05/08/2008, 07:21
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Respuesta: filtrar por fechas

me sigue fallando


me da el error

Tipo de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 2.
/intranet_esihuman/cand_busca_total.asp, línea 514

y en la linea 514 tengo

rs.open ()
  #20 (permalink)  
Antiguo 05/08/2008, 07:48
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

¿Donde asignas la variable sql al recordset?

Supongo que en algun sitio haces algo parecido a esto:

set rs = objetoConexion.execute(sql)

objetoConexion es una instancia de ADODB.Connection


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

lo hago asi

Código PHP:
set rs=Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection MM_sumer_con_STRING
rs
.Source sql
rs
.PageSize numregistresmostrats
rs
.CacheSize numregistresmostrats

rs
.CursorType 3
rs
.CursorLocation 3
rs
.LockType 3
rs
.open () 
  #22 (permalink)  
Antiguo 05/08/2008, 08:30
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

Pon el resultado que te da la variable sql despues de tanta concatenación

response.write(sql)
response.end()

ANTES de abrir la conexión para ver como viene. Por ahí anda el error....



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

escupe esto

select * FROM CURRICULUMS where int(dateDiff("d", data_naixament, date())/365) >= 18 and int(dateDiff("d", data_naixament, date())/365) <= 19 order by codi
  #24 (permalink)  
Antiguo 05/08/2008, 14:03
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

Hola,

Por favor, justo antes de hacer esto:

Código:
set rs=Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = MM_sumer_con_STRING
rs.Source = sql
rs.PageSize = numregistresmostrats
rs.CacheSize = numregistresmostrats

rs.CursorType = 3
rs.CursorLocation = 3
rs.LockType = 3
rs.open ()  
Escribe esta linea:

sql = "select int(dateDiff("d", data_naixament, date())/365) as agno FROM CURRICULUMS"

Y luego, tras abrir el recordset, escribe estas lineas:

Código:
do while not rs.EOF 
      response.write(rs("agno") & "<br />")
      rs.moveNext()
loop
rs.close()
set rs = nothing
response.end()

Y dime los datos que salen.



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

Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 2.
/intranet_esihuman/cand_busca_total.asp, línea 517
  #26 (permalink)  
Antiguo 05/08/2008, 14:59
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

Recuerda poner las dobles comillas en el primer parámetro de dateDiff (""d"")
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #27 (permalink)  
Antiguo 05/08/2008, 15:34
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Respuesta: filtrar por fechas

ya kas puse si no me da el error

Tipo de error:
Error de compilación de Microsoft VBScript (0x800A0401)
Se esperaba un final de instrucción
/intranet_esihuman/cand_busca_total.asp, línea 504, columna 29
sql2 = "select int(dateDiff("d", data_naixament, date())/365) as agno FROM CURRICULUMS"
----------------------------^
  #28 (permalink)  
Antiguo 05/08/2008, 15:56
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas

mmmm, entonces, ¿la linea 517 (la del error) corresponde a esta?:

rs.Source = sql

A ver, que me estoy volviendo loco

Sustituye esto

Código:
set rs=Server.CreateObject("ADODB.Recordset") rs.ActiveConnection = MM_sumer_con_STRING rs.Source = sql rs.PageSize = numregistresmostrats rs.CacheSize = numregistresmostrats rs.CursorType = 3 rs.CursorLocation = 3 rs.LockType = 3 rs.open ()


por esto

Código:
set oConn=Server.CreateObject("ADODB.Connection")
    set rs=Server.CreateObject("ADODB.Recordset")

oConn.Open MM_sumer_con_STRING

rs.PageSize=numregistresmostrats
    rs.CacheSize=numregistresmostrats


   rs.Open sql, oConn, 3, 3


 



Y deja lo otro igual


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -

Última edición por tammander; 05/08/2008 a las 16:04
  #29 (permalink)  
Antiguo 05/08/2008, 16:18
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Respuesta: filtrar por fechas

me sigue dando el error

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


la linea 515 es

rs.Open sql, oConn, 3, 3
  #30 (permalink)  
Antiguo 05/08/2008, 16:24
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: filtrar por fechas



A ver... Ultimo intento


Sustituye esto:

Código:
rs.PageSize=numregistresmostrats
rs.CacheSize=numregistresmostrats

rs.Open sql, oConn, 3, 3
por esto

Código:
set rs = oConn.execute(sql)


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
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:18.