Ir a un registro especifico de un formulario

En un formulario se introducen los datos fecha, debe, haber, tmov (debe-haber), pertenecientes a la tabla movimientos con un campo tipo autonumeración llamado Rgtro . En el encabezado del formulario hay un botón para cerrarlo, pero antes de ejecutar esa acción debe comprobar que no existe descuadre entre el debe y el haber, si existiese, busca el descuadre y crea nuevo registro con la fecha, debe y haber no tienen nada. Pretendo que al intentar salir del formulario compruebe si existe el descuadre, si existe debe comprobar que si hay un registro como el descrito antes y posicionarse en el y si no existe el registro ir a crear uno nuevo con la fecha.

He intentado solucionarlo de la siguiente forma:

Dim BUSSQL As String, BUS As DAO.Recordset, CON As Double, FEC As Date, LIN As Long

'Comprueba si hay descuadre
BUSSQL = "SELECT Sum(Int((MOVIMIENTOS.TOTALMOV*100)+0.5)/100) AS TMOV, MOVIMIENTOS.FECHA" _
         & " FROM MOVIMIENTOS" _
         & " GROUP BY MOVIMIENTOS.Fecha" _
         & " HAVING (((Sum(MOVIMIENTOS.TotalMov))<>0))"
Set BUS = CurrentDb.OpenRecordset(BUSSQL)
CON = Nz(BUS.Fields(0).Value, 0)
FEC = Nz(BUS.Fields(1).Value, 0)
If CON <> 0 Then
    MsgBox "Existe un descuadre de ( " & CON & " euros)"
    '---- Comprueba si hay línea con importe cero ---------
    Dim FILTRO As String
    FILTRO = "TOTALMOV = " & 0
    LIN = DLookup("LINEA", "MOVIMIENTOS", FILTRO)
    '---- Si no existe, a registro nuevo ------------------
    If LIN = 0 Then
        DoCmd.GoToRecord , "", acNewRec
        DoCmd.GoToControl "FECHA"
        Fecha = FEC
    '---- Si existe, a registro existente -----------------
    ElseIf LIN <> 0 Then
        Dim Rs As Object
        Set Rs = Me.Recordset.Clone
        Rs.FindFirst "[LINEA] = " & Nz(LIN, 0)
        If Not Rs.EOF Then Me.Bookmark = Rs.Bookmark
    End If
Else
    DoCmd.Close
End If

Solo funciona cuando esta situado en un nuevo registro, luego no hace nada, siempre esta en el botón de cierre.

Lo he intentado encontrar la solución leyendo lo que he visto por internet pero no la encuentro.

Añade tu respuesta

Haz clic para o