Problema con ADO vb6
Una tabla (la cual ya está cargada con datos de una planilla de excel) la estructura tiene este formato:
Código Apellido Nombre Fecha Hora Modo
3123 Basic Visual 12/05/2050 08:50:23 Entrada
3123 Basic Visual 12/05/2050 16:02:00 Salida
Etc etc,
Esos datos los utilizo para cargarlos en una tabla con esta estructura:
Código Apellido Nombre Día Fecha Entrada Salida Horas
3123 Basic Visual Jue 12/05/2050 08:50:23 16:02:00 7
---------------
El código que les escribo a continuación me tira este error:
Err -2147217864 (80040e38)
Descripción "No se puede encontrar la fila para su actualización: algunos valores han cambiado desde la última vez que se leyó."
Este es el código fuente:
For i = 1 To rsX.RecordCount
If rsF.RecordCount > 0 Then
Err = 0
rsF.Filter = "Apellido='" & rsX("Apellido") & "' AND Nombre='" & rsX("Nombre") & "' AND Fecha=#" & rsX("Fecha") & "#"
If rsF.RecordCount = 1 Then
If rsX("Modo").Value <> "Salida" Then
If rsF("Entrada") = Null Then rsF("Entrada") = rsX("Hora")
If rsF("Entrada") > rsX("Hora") Then rsF("Entrada") = rsX("Hora")
Else
If rsF("Salida") = Null Then rsF("Salida") = rsX("Hora")
If rsF("Salida") < rsX("Hora") Then rsF("Salida") = rsX("Hora")
End If
'rsF("Horas") = CalcularHoras(rsF("Entrada"), rsF("Salida"), rsE("TEntrada"), rsE("TSalida"), rsE("SEntrada"), rsE("SSalida"), rsE("DescSabado"), rsF("Fecha"), rsF("Apellido"), rsF("Nombre"), 5, 57,, rsE("Especiales"))
else
'codigo para agregar una nueva fichada
End If
Else
rsF.Filter = adFilterNone
With rsF
.AddNew
.Fields("Codigo") = rsX("Codigo")
.Fields("Apellido") = rsX("Apellido")
.Fields("Nombre") = rsX("Nombre")
.Fields("Dia") = WeekdayName(Weekday(rsX("Fecha"), vbSunday), True, vbSunday)
.Fields("Fecha") = rsX("Fecha")
If rsX("Modo").Value <> "Salida" Then
.Fields("Entrada") = rsX("Hora")
.Fields("Salida") = TimeValue("23:59:59")
Else
.Fields("Salida") = rsX("Hora")
.Fields("Entrada") = TimeValue("00:00:00")
End If
'. Fields("Horas") = CalcularHoras(rsF("Entrada"), rsF("Salida"), rsE("TEntrada"), rsE("TSalida"), rsE("SEntrada"), rsE("SSalida"), rsE("DescSabado"), rsF("Fecha"), rsF("Apellido"), rsF("Nombre"), 5, 57,, rsE("Especiales"))
End With
End If
rsX.MoveNext
Next
rsF.Filter = adFilterNone
rsF.UpdateBatch adAffectAllChapters
datFichadas.Refresh
rsF.Sort = "Codigo ASC, Fecha DESC"
rsF.Requery
Screen.MousePointer = vbDefault
Exit Sub
----------
Cualquier ayuda idea que tengas me sería de gran ayuda.
¡Help!
Código Apellido Nombre Fecha Hora Modo
3123 Basic Visual 12/05/2050 08:50:23 Entrada
3123 Basic Visual 12/05/2050 16:02:00 Salida
Etc etc,
Esos datos los utilizo para cargarlos en una tabla con esta estructura:
Código Apellido Nombre Día Fecha Entrada Salida Horas
3123 Basic Visual Jue 12/05/2050 08:50:23 16:02:00 7
---------------
El código que les escribo a continuación me tira este error:
Err -2147217864 (80040e38)
Descripción "No se puede encontrar la fila para su actualización: algunos valores han cambiado desde la última vez que se leyó."
Este es el código fuente:
For i = 1 To rsX.RecordCount
If rsF.RecordCount > 0 Then
Err = 0
rsF.Filter = "Apellido='" & rsX("Apellido") & "' AND Nombre='" & rsX("Nombre") & "' AND Fecha=#" & rsX("Fecha") & "#"
If rsF.RecordCount = 1 Then
If rsX("Modo").Value <> "Salida" Then
If rsF("Entrada") = Null Then rsF("Entrada") = rsX("Hora")
If rsF("Entrada") > rsX("Hora") Then rsF("Entrada") = rsX("Hora")
Else
If rsF("Salida") = Null Then rsF("Salida") = rsX("Hora")
If rsF("Salida") < rsX("Hora") Then rsF("Salida") = rsX("Hora")
End If
'rsF("Horas") = CalcularHoras(rsF("Entrada"), rsF("Salida"), rsE("TEntrada"), rsE("TSalida"), rsE("SEntrada"), rsE("SSalida"), rsE("DescSabado"), rsF("Fecha"), rsF("Apellido"), rsF("Nombre"), 5, 57,, rsE("Especiales"))
else
'codigo para agregar una nueva fichada
End If
Else
rsF.Filter = adFilterNone
With rsF
.AddNew
.Fields("Codigo") = rsX("Codigo")
.Fields("Apellido") = rsX("Apellido")
.Fields("Nombre") = rsX("Nombre")
.Fields("Dia") = WeekdayName(Weekday(rsX("Fecha"), vbSunday), True, vbSunday)
.Fields("Fecha") = rsX("Fecha")
If rsX("Modo").Value <> "Salida" Then
.Fields("Entrada") = rsX("Hora")
.Fields("Salida") = TimeValue("23:59:59")
Else
.Fields("Salida") = rsX("Hora")
.Fields("Entrada") = TimeValue("00:00:00")
End If
'. Fields("Horas") = CalcularHoras(rsF("Entrada"), rsF("Salida"), rsE("TEntrada"), rsE("TSalida"), rsE("SEntrada"), rsE("SSalida"), rsE("DescSabado"), rsF("Fecha"), rsF("Apellido"), rsF("Nombre"), 5, 57,, rsE("Especiales"))
End With
End If
rsX.MoveNext
Next
rsF.Filter = adFilterNone
rsF.UpdateBatch adAffectAllChapters
datFichadas.Refresh
rsF.Sort = "Codigo ASC, Fecha DESC"
rsF.Requery
Screen.MousePointer = vbDefault
Exit Sub
----------
Cualquier ayuda idea que tengas me sería de gran ayuda.
¡Help!
3 Respuestas
Respuesta de emperador20
1
Respuesta de Edward Caceres
1
Respuesta de Roberto Alvarado