Controlar que no me repita el dato
Mi problema es que cuando entra un dato a mi aplicación ejemplo auto 1 y ese auto 1 ya esta agregado anteriormente en mi base de datos siempre me dice que es verdadero el EOF y no entra, por eso cuando el dato que entra auto 1 siempre me lo agrega generando un registro nuevo y lo que quiero es que vea si ese auto 1 ya existe que no agregue otro registro sino que modifique los demás datos de ese auto 1 osea velocidad etc.
El código es este
Do While Not MiRecordset. EOF aca no entra y siempre dice verdadero y pasa a base bacia y agrega otro registro que es lo que yo no quiero, quiero que modifique si existe ese auto 1 los demas datos dejando siempre un registro de ese auto 1.
'Actualizamos la posición del móvil en las últimas posiciones
If Val(Movil) <> 0 And Val(Movil) = MiRecordset!Poul_vehi_id Then
MiRecordset!Poul_latitud = Latitud1
MiRecordset!Poul_longitud = Longitud1
'Llamamos a CalculoFecha para calcular la hora y el día con el resultado de las horas de menos para Uruguay con relación a UTM
FechaC = CalculoFecha(DiaHora)
diayhora = FechaC
MiRecordset!Poul_posi_fecha = FechaC
Print #2, "Guardo datos del Movil " & Movil
Print #2, " Latitud: " & Latitud1; "Longitud: " & Longitud1; "Fecha: " & FechaC
PVelocidad = Val(Mid(VirlocData, 34, 3))
PSentido = Val(Mid(VirlocData, 37, 3))
PCalidad = 3
VHexa = "&H" & Mid(VirlocData, 43, 2)
PEstado = CInt(VHexa)
AlarmaMostrada = Mid(VirlocData, 45, 2)
If Val(AlarmaMostrada) = 0 Then
PEvento = 20
Else
PEvento = Val(AlarmaMostrada)
End If
MiRecordset!Poul_velocidad = PVelocidad
MiRecordset!Poul_sentido = PSentido
MiRecordset!Poul_calidad_sgn = PCalidad
MiRecordset!Poul_estado = PEstado
MiRecordset!Poul_evento = PEvento
Encontrado = True
MiRecordset.Update
Exit Do
End If
MiRecordset.MoveNext
Loop
MiRecordset.MoveFirst
BaseVacia:
If MiRecordset2.EOF = True And MiRecordset2.BOF = True Then
Exit Sub
End If
If Encontrado = False And Val(Movil) <> 0 Then
MiRecordset.AddNew
MiRecordset!Poul_vehi_id = Movil
MiRecordset!Poul_latitud = Latitud1
MiRecordset!Poul_longitud = Longitud1
FechaC = CalculoFecha(DiaHora)
diayhora = FechaC
MiRecordset!Poul_posi_fecha = FechaC
Print #2, "Guardo datos del Movil " & Movil
Print #2, " Latitud: " & Latitud1; "Longitud: " & Longitud1; "Fecha: " & FechaC
PVelocidad = Val(Mid(VirlocData, 34, 3))
MiRecordset.Update
End If
End If
El código es este
Do While Not MiRecordset. EOF aca no entra y siempre dice verdadero y pasa a base bacia y agrega otro registro que es lo que yo no quiero, quiero que modifique si existe ese auto 1 los demas datos dejando siempre un registro de ese auto 1.
'Actualizamos la posición del móvil en las últimas posiciones
If Val(Movil) <> 0 And Val(Movil) = MiRecordset!Poul_vehi_id Then
MiRecordset!Poul_latitud = Latitud1
MiRecordset!Poul_longitud = Longitud1
'Llamamos a CalculoFecha para calcular la hora y el día con el resultado de las horas de menos para Uruguay con relación a UTM
FechaC = CalculoFecha(DiaHora)
diayhora = FechaC
MiRecordset!Poul_posi_fecha = FechaC
Print #2, "Guardo datos del Movil " & Movil
Print #2, " Latitud: " & Latitud1; "Longitud: " & Longitud1; "Fecha: " & FechaC
PVelocidad = Val(Mid(VirlocData, 34, 3))
PSentido = Val(Mid(VirlocData, 37, 3))
PCalidad = 3
VHexa = "&H" & Mid(VirlocData, 43, 2)
PEstado = CInt(VHexa)
AlarmaMostrada = Mid(VirlocData, 45, 2)
If Val(AlarmaMostrada) = 0 Then
PEvento = 20
Else
PEvento = Val(AlarmaMostrada)
End If
MiRecordset!Poul_velocidad = PVelocidad
MiRecordset!Poul_sentido = PSentido
MiRecordset!Poul_calidad_sgn = PCalidad
MiRecordset!Poul_estado = PEstado
MiRecordset!Poul_evento = PEvento
Encontrado = True
MiRecordset.Update
Exit Do
End If
MiRecordset.MoveNext
Loop
MiRecordset.MoveFirst
BaseVacia:
If MiRecordset2.EOF = True And MiRecordset2.BOF = True Then
Exit Sub
End If
If Encontrado = False And Val(Movil) <> 0 Then
MiRecordset.AddNew
MiRecordset!Poul_vehi_id = Movil
MiRecordset!Poul_latitud = Latitud1
MiRecordset!Poul_longitud = Longitud1
FechaC = CalculoFecha(DiaHora)
diayhora = FechaC
MiRecordset!Poul_posi_fecha = FechaC
Print #2, "Guardo datos del Movil " & Movil
Print #2, " Latitud: " & Latitud1; "Longitud: " & Longitud1; "Fecha: " & FechaC
PVelocidad = Val(Mid(VirlocData, 34, 3))
MiRecordset.Update
End If
End If
1 respuesta
Respuesta de w1shm4st3r
1