¡Gracias!
Implementé primero la opción que me indicaste, pero surgía un problema: el código abría la Tabla CargasdeCombustible, iba al último registro, leía el valor del campo KMActual y lo pegaba en el nuevo registro en el campo KManterior. Pero como la tabla principal tiene muchos vehículos, necesitaba una solución que identificara el kilometraje anterior de cada vehículo en particular. Entonces miré el link y adapté una solución publicada por Neckkito y anda perfecto, desaparecieron los mensajes de error. Como no soy nada avezado en los códigos (sólo me limito a seguir la lógica) me gustaría -si tienes tiempo y ganas- que revises el código para ver si es correcto (creo que hay una opción o sentencia que está demás)
Private Sub FECHA_AfterUpdate()
Dim regAnterior As Variant
'Si no se ha escrito ninguna fecha salimos sin hacer nada
If IsNull(Me.FECHA.Value) Then
MsgBox "Debe indicar una FECHA", vbInformation, "SIN DATOS"
Exit Sub
End If
'Si no hay PATENTE avisamos y salimos
If IsNull(Me.PATENTE.Value) Then
MsgBox "Debe indicar una Patente", vbInformation, "SIN DATOS"
Exit Sub
End If
'Buscamos el valor del campo KMactual del registro anterior; esto es, del registro
'que tiene el Id más alto excluyendo el del registro en el que estamos
'Aquí incluimos el efecto de la patente, en la parte del filtro
regAnterior = Nz(DMax("KMActual", "CargasdeCombustible", "PATENTE='" & Me.PATENTE.Value & "' AND Id<" & Me.id.Value), 0)
'Si es el primer registro de esa patente la función Nz() hace que regAnterior tome el
'valor 0. Eso significa que estamos en el primer registro
If regAnterior = 0 Then
'Escribimos el valor en el campo [KManterior]
Me.KManterior.Value = regAnterior
Else 'En caso contrario controlamos que todo sea correcto
If Me.KManterior.Value < regAnterior Then 'El Kilometraje introducido es menor que el del registro anterior
MsgBox "El Kilometraje no es correcto, dado que es inferior al último registrado" _
, vbExclamation, "INCORRECTO"
Me.KManterior.Value = Null
Exit Sub
Else
Me.KManterior.Value = regAnterior
End If
End If
End Sub
La parte que me parece que está demás es:
Else 'En caso contrario controlamos que todo sea correcto
If Me.KManterior.Value < regAnterior Then 'El Kilometraje introducido es menor que el del registro anterior
Ya que difícilmente el kilometraje actual leído del registro anterior y ahora copiado en el registro actual sea menor.
Pero bueno, lo que importa es que funciona.
Mil gracias nuevamente!