Access - Obtener datos de Access al hacer un filtro por un camp de tipo Fecha/Hora

 
Vista:
sin imagen de perfil

Obtener datos de Access al hacer un filtro por un camp de tipo Fecha/Hora

Publicado por Jose Luis Espinoza (1 intervención) el 05/06/2014 21:51:54
Hola a todos!!! Espero me puedan ayudar en mi duda.

Estoy haciendo un mantenimiento a una aplicación en Visual Basic6 y tengo un problema al consultar una base de datos que pertenece a un reloj de asistencia Iface 302 que esta hecha en access.

Bueno esto es un metodo que permite cargar la asistencia antes de esto tengo un metodo de conexion que todo anda correctamente:

Private Sub CargaAsistenciaiface(pTabla As Integer)
Dim rsBiface As New ADODB.Recordset
Dim rsTmp As New ADODB.Recordset
Dim strBiface As String
Dim lvsSQL As String
Dim lvdFechaIni As String
Dim lvdFechaFin As String
Dim lvhora As String
Dim fecIni As Date
fecIni="05/05/2014"
Select Case pTabla
Case 1
strBiface = " Select nTerminalID, nFingerPrintID, Log_Date, " & _
" Log_Time, nVerifyResult, nFunctionKey, bConverted " & _
" from LogInfo"
Case 2 //aqui es donde esta mi problema
// cuando hago esta consulta sin filtrar nada me sale todo correctamente.
strBiface = " Select Badgenumber,Checktime " & _
" from Checkinout c inner join Userinfo u " & _
"on c.Userid=u.Userid where
// a la hora de hacer una consulta por filtrado de fecha mayor a una fecha inicial es donde me sale un error:
// Error 13 en tiempo de ejecucion: no coinciden los tipos. El campo checktime es de tipo Fecha/Hora.
//Cunado ejecuto esto en mi consulta de access me salen todos los datos correctamente. Les agradeceria
//de antemano si me pudieran ayudar con esto.
strBiface = " Select Badgenumber,Checktime " & _
" from Checkinout c inner join Userinfo u " & _
"on c.Userid=u.Userid where Checktime > #" + fecIni + "# "

End Select

rsBiface.Open strBiface, cnxiface, 3, 3

frmProgresBar.Caption = "Datos de Asistencia"
frmProgresBar.lblMsg.Caption = "Cargando Datos de Asistencia"
frmProgresBar.pb.Max = rsBiface.RecordCount + 1
frmProgresBar.Refresh
frmProgresBar.Show

Do While Not rsBiface.EOF
If pTabla = 1 Then
If rsBiface.AbsolutePosition = 1 Then
lvdFechaIni = FormatoFechaiface(rsBiface("Checktime"))
ElseIf rsBiface.AbsolutePosition = rsBiface.RecordCount Then
lvdFechaFin = FormatoFechaiface(rsBiface("Checktime"))
End If

ludtReg.AsiFec = FormatoFechaiface(rsBiface("Checktime"))
ludtReg.AsiHora = FormatoHoraiface(rsBiface("Checktime"))
ludtReg.AsiHorReal = FormatoHoraiface(rsBiface("Checktime"))
ludtReg.PerMarcacion = Right(rsBiface("nFingerPrintID"), gvsNumCarMar)
ludtReg.AsiAno = Year(rsBiface("Checktime"))
Else
If rsBiface.AbsolutePosition = 1 Then
lvdFechaIni = FormatoFechaiface(rsBiface("Checktime"))

ElseIf rsBiface.AbsolutePosition = rsBiface.RecordCount Then
lvdFechaFin = FormatoFechaiface(rsBiface("Checktime"))
End If

ludtReg.AsiFec = FormatoFechaiface(rsBiface("Checktime"))
ludtReg.AsiHora = FormatoHoraiface(rsBiface("Checktime"))
ludtReg.AsiHorReal = FormatoHoraiface(rsBiface("Checktime"))
ludtReg.PerMarcacion = CEROS(rsBiface("Badgenumber"), CInt(gvsNumCarMar))
ludtReg.AsiAno = Year(rsBiface("Checktime"))
End If

'Verifica si existe la marca en la tabla de asistencia
rsTmp.Open "EXEC sp_Busca_Marca '" & ludtReg.AsiFec & "','" & ludtReg.AsiHora & "','" & ludtReg.PerMarcacion & "'", gCnx, adOpenStatic, adLockPessimistic

'Si no existe la marca en la tabla de asistencia
If rsTmp.BOF Or rsTmp.EOF Then
lvsSQL = "INSERT INTO tAsistencia "
lvsSQL = lvsSQL + " (AsiFec, AsiHora, PerMarcacion,"
lvsSQL = lvsSQL + " AsiAno, AsiNroEquipo, AsiEvento,AsiHorReal,AsiTecFun) "
lvsSQL = lvsSQL + " VALUES ( "
lvsSQL = lvsSQL + "'" & ludtReg.AsiFec & "', "
lvsSQL = lvsSQL + "'" & ludtReg.AsiHora & "', "
lvsSQL = lvsSQL + "'" & ludtReg.PerMarcacion & "', "
lvsSQL = lvsSQL + "'" & ludtReg.AsiAno & "', "
lvsSQL = lvsSQL + "'000', "
lvsSQL = lvsSQL + "'0', "
lvsSQL = lvsSQL + "'" + ludtReg.AsiHorReal + "', "
lvsSQL = lvsSQL + "'0')"
gCnx.Execute (lvsSQL)
End If
rsTmp.Close
rsBiface.MoveNext
If rsBiface.BOF Or rsBiface.EOF Then
frmProgresBar.pb.Value = rsBiface.RecordCount
Else
frmProgresBar.pb.Value = rsBiface.AbsolutePosition
End If
frmProgresBar.Refresh
Loop
rsBiface.Close
Set rsBiface = Nothing
Set rsTmp = Nothing

'Verifica como se determina el tipo de marca
'Si el Terminal determina el tipo de marca
If gvsTipoMarca = "1" Then

gCnx.Execute "EXEC sp_Actualiza_Tipo_Marca_por_Reloj"

'O si lo determina el Horario o Turno Asignado
ElseIf gvsTipoMarca = "2" Then

'Evalua si es marca de ingreso
gCnx.Execute "EXEC sp_Actualiza_Tipo_Marca_Ingreso"

'Evalua si es marca de salida
gCnx.Execute "EXEC sp_Actualiza_Tipo_Marca_Salida"
End If

Select Case pTabla
Case 1
cnxiface.Execute "delete from LogInfo"
Case 2
cnxiface.Execute "delete from checkinout"
End Select
Unload frmProgresBar
End Sub


Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder