Problema con fecha

Hola, bueno antes de nada gracias por tu tiempo.
Como la aplicación que estoy haciendo es muy básica primero la he intentado con VBA en Access97 y DAO, y el problema
Es que quiero hallar determinados movimientos entre dos fechas, por ejemplo yo se que hay movimientos desde el 27/07/2003 hasta el 01/08/2003 y si la hago esta consulta:
Set MirSfichajeS = MidB.OpenRecordset("SELECT * FROM FICHAJES WHERE codigo='229' AND dia >=#27/07/2003# AND dia <=#05/08/2003# ORDER BY IDMOV ASC")
Pues con esta consulta no devuelve nada, pero sin embargo si en vez del 05/08/2003 pongo a partir del 08/08/2003 si funciona. También lo he probado con VB y tampoco funciona.
El campo día es clave primaria, y no permite nulos...
En fin, estoy un poco perdido..
Gracias.

1 respuesta

Respuesta
1
Porque no probás instalando los drivers Jet
La url para w9x y nt4 es:
http://download.microsoft.com/download/e/8/c/e8c5729c-d90a-4d15-bdc1-cbc9eae82924/Jet40SP7_9xNT.exe
Para w2k y xp los bajás de windowsupdate
Probá y contame
Hola y gracias de nuevo,
he probado tu consulta, pero sigue sin funcionar :( . Aunque lo he conseguido solucionar con esta consulta:
Set MirSfichajeS = MidB.OpenRecordset("select * FROM fichajes WHERE codigo='" & code & "' AND format(dia,'yyyMMdd')>='" & Format(fecha1, "yyyMMdd") & "' AND format(dia,'yyyMMdd')<='" & Format(fecha2, "yyyMMdd") & "' ORDER BY IDMOV ASC")
Pero esta solución, tiene alguna pega. He probado el mdb en 2 equipos uno con XP y otro con 2000 y en ambos esta instalado el Visual Studio y funciona bien. Pero al probar el mdb en equipos con W98 y sin Visual Studio, me da un error de compilación:no encuentra el proyecto o la biblioteca, y el cursor se queda sobre el Format de & Format(fecha1, "yyyMMdd") & .He instalado el MDAC 2.7 y sigue fallando. No se si habría que añadir alguna referencia, pero no se cual sería ni donde esta el menu de añadir referencias en Access 97.
En fin, no se si habrás visto esto alguna vez... Gracias.
Probá con esta consulta, a ver si te funciona
Set MirSfichajeS = MidB.OpenRecordset("SELECT * FROM FICHAJES WHERE codigo='229' AND dia BETWEEN #27/07/2003# AND #05/08/2003# ORDER BY IDMOV ASC")
La forma de sumar es la siguiente:
Dim var1 As Date
Dim var2 As Date
var1 = Date & " " & Time
var2 = "16:51:59"
MsgBox var1 + var2
Seguramente el problema lo tenés porque en ninguno de los 2 operadores estás estableciendo la fecha.
Vas a ver que de esta forma te funciona.
Hola Andrés,
bueno pues la verdad es que al final comprobé las referencias y en el equipo con W98 faltaba una, así que la deseleccione y listo :). Y esta espero que sea la última pregunta: ahora el problema lo tengo en que quiero sumar horas:minutos:segundos, y utilizo una variable de tipo Date, con lo cual cuando pasa de 24 horas empieza a dar valores raros. ¿Cómo podría sumar horas?
Gracias por tu tiempo.
Hola Andrés,
Antes de nada perdón por el retraso al contestarte, la solución que me das funciona, pero al acumular horas pasa de día y yo solo quiero un total de horas, p.e 48:56:12. Al final lo he solucionado con esta función:
Function TiempoTotal(cantidad As Date)
Dim totalhours As Long, totalminutes, totalseconds As Long
Dim days As Long, hours As Long, minutes As Long, seconds As Long
Dim minutes2 As String, seconds2 As String
Dim interval As Variant, j As Integer
interval = #12:00:00 AM#
interval = interval + cantidad
totalhours = Int(CSng(interval * 24))
totalminutes = Int(CSng(interval * 1440))
totalseconds = Int(CSng(interval * 86400))
hours = totalhours Mod 24
minutes = totalminutes Mod 60
seconds = totalseconds Mod 60
minutes2 = minutes
seconds2 = seconds
If minutes = "0" Then
minutes2 = minutes & "0"
Else
If minutes > 0 And minutes < 10 Then ' de 1 a 9 minutos
minutes2 = "0" & minutes
End If
End If
If seconds = "0" Then
seconds2 = seconds & "0"
Else
If seconds > 0 And seconds < 10 Then 'de 1 a 9 segundos
seconds2 = "0" & seconds
End If
End If
TiempoTotal = totalhours & ":" & minutes2 & ":" & seconds2
End Function
Gracias por tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas