Problema el eliminar registros con botón

Tengo un formulario con varios subformularios y algunos campos tienen un valor predeterminado. Los subformularios están relacionados con integridad referencial. Y algunos subformularios están vinculados unos con otros y a su vez con el principal.

Tengo un problema y es que al eliminar el último registro me genera un registro nuevo vacío y no me viene bien. Cuando elimino un registro, que no sea el último, el formulario se va al último registro, eso si me vale.

Pero que me genere registros vacío no se como evitarlo.

Por favor ayuda

El código del botón eliminar es el siguiente

Private Sub Comando91_Click()
Dim resp As Integer
resp = MsgBox("¿ESTÁS SEGURO DE QUERER ELIMINAR EL REGISTRO?.", vbYesNo + vbInformation, "CONFIRMAR")
If resp = vbYes Then
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.GoToRecord , , acLast
DoCmd.SetWarnings True
End If
Form.Refresh
End Sub

2 respuestas

Respuesta
1

Si se elimina un registro lo adecuado es volver a cargar el origen de datos del formulario en lugar de refrescar la presentación:

Form.Refresh ===>>> Form.Requery

Es muy probable que la creación del nuevo registro la origine el ir al ultimo sin recargar previamente el origen de datos del formulario.

Quizás así se logre un funcionamiento correcto:

...
If resp = vbYes Then
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
Me.Requery '     Me = el objeto formulario activo
DoCmd.GoToRecord , , acLast
DoCmd.SetWarnings True
End If

Gracias. Lo he probado y si elimino un registro que esté en medio funciona, pero si elimino el último se genera uno nuevo otra vez 

Si se elimina (o comenta) la línea que lo envía al ultimo ¿se crea el nuevo registro?

Normalmente al ejecutar la acción de recargar el origen de datos, el foco lo recibe el primer registro y lo convierte en el activo.

Desplazarse al ultimo no debería crear un nuevo registro aunque este tenga valores predeterminados, quizás hay algo mas que interfiere.

La relación entre tablas ¿permite el borrado en cascada?.

Respuesta
1

Siempre irá al último porque está retirando registros de un subformulario vinculado al principal por el ID y el campo ID lo tiene visible. No tiene nada que ver Refresh ni Requery, sobran.

Esto sucede mientras trabaje con formularios dependientes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas