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.