Como eliminar un registro seleccionado de una tabla desde un boton (con access vba)?

Tengo un subformulario que muestra, a través de una query, una tabla donde se guardan registros.

Necesito que desde el botón "eliminar registro" que tengo en el formulario principal se pueda borrar un registro de esa tabla cuando es seleccionado.

El código que hice no me funciona por eso les pido ayuda:

Private Sub Eliminar_Registro_Click()
Dim MI BASE As String
Dim Query As String
Dim i, j
Dim Cuenta As Integer
Dim Numero As Integer
Dim ValorElegido As Integer

Cuenta = Me.TABLA_TOTAL_Subform.Form.Count

For i = 0 To Cuenta - 1
If Me.TABLA_TOTAL_Subform.Form.CurrentRecord = True Then
Numero = Numero + 1
End If
Next i

If Numero = 0 Then MsgBox "Debes elegir un elemento", vbExclamation:

Exit Sub

For j = 0 To Cuenta - 1
If Me.TABLA_TOTAL_Subform.Form.Selected(j) = True Then
If Me.TABLA_TOTAL_Subform.Form.ListIndex = 0 Then MsgBox "Encabezado!", vbCritical: Exit Sub
ValorElegido = Me.TABLA_TOTAL_Subform.Form.List(j)
'MsgBox ValorElegido
End If
Next j

Query = "DELETE * FROM TABLA TOTAL WHERE Id = " & ValorElegido

End Sub

Les agradezco desde ya si me pueden ayudar con esto.

2 Respuestas

Respuesta
1

Sería conveniente que pusieras una imagen del formulario y subformulario para una respuesta más concreta. Verás, rengo el formulario Compras basado en la tabla del mismo nombre y tiene un subformulario DetalleCompra basado en la tabla del mismo nombre, que tiene un campo Iddetalle. Formulario y subformulario están relacionados por IdCompra. Si selecciono un registros del subformulario

En este caso el de Peras... y pulso el botón Eliminar registro del formulario( tal como afirmas en tu pregunta)

Ha desaparecido y el código del botón es muy simple, sin necesidad de escribir el disparate que te han puesto

Private Sub Comando33_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "delete * from DetalleCompra where iddetalle=" & Me.DetalleCompra.Form!IdDetalle & " and idcompra=" & Me.IdCompra & ""
Me.DetalleCompra.Form.Requery
End Sub

Es decir, No me muestres mensajes de aviso( se supone que ya somos mayorcitos para saber que queremos hacer cuando pulsamos un botón) y elimina de la tabla Detallecompra aquel registro que tenga el mismo Idcompra que el formulario y el Iddetalle igual al que acabo de señalar. Luego quiero que el subformulario "reconsulte" su origen de registros.

En caso de que Iddetalle fuera autonumérico sobraría lo de Idcompra=" & me.idcompra & "

Respuesta
1

Que respuestas por Dios, están preguntando es "Eliminar un registro activo de un subformulario, desde un botón del formulario principal".

Tengo el formulario principal que contiene un subformulario de pedidos. Voy a retirar el pedido resaltado, en este caso es el id de pedido número 35

Hago clic en Sí y obtengo

¿Qué pasa si el usuario presiona la tecla suprimir?. Obtiene lo siguiente.

En este caso en el subformulario se debe programar el evento Al bajar una tecla y en la pestaña Eventos se debe marcar "Tecla de vista previa" en Sí.

Código del evento Al bajar una tecla del subformulario.

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then
    MsgBox "La tecla suprimir esta deshabilitada", vbInformation, "No permitido"
    KeyCode = 0
End If
End Sub

Código del botón Eliminar del formulario principal.

Private Sub btnEliminar_Click()
 On Error GoTo hay_error
  Dim lntem As Long
    lntem = Me.subPedidos.Form![Id de pedido] 'Guardo el número de pedido seleccionado en el subformulario
    If MsgBox("¿Está seguro que elimina el registro " & lntem & " ?", vbQuestion + vbDefaultButton2 + vbYesNo, "Retirando..") = vbYes Then
      DoCmd.RunSQL "DELETE FROM pedidos WHERE [Id de pedido]=" & lntem
      Me.subPedidos.Form.Requery
      If Err.Number = 0 Then
        MsgBox "Pedido retirado OK", vbInformation, "Retirando..."
      End If
    End If
hay_error_exit:
  Exit Sub
hay_error:
    MsgBox Err.Description, vbCritical, "Error.."
    Resume hay_error_exit
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas