Crear código para eliminar registros

Dispongo de un formulario llamado SEDES, donde se encuentra organizado mediante un Control de Pestañas para separarlas por cliente (Sedes Paco, Sedes Elena...) y luego, dentro de cada pestaña, dispongo de un cuadro de lista (ListaPaco, ListaElena...) que me permite visualizar dichos datos como si fuera una tabla.

Para cada pestaña tengo un botón de eliminar que permite la eliminación de aquellas sedes que se cierran. Mi idea es crear un único botón genérico donde pueda eliminar una sede dependiendo de la pestaña en la que me encuentre.

Es decir, en la pestaña SEDES PACO, tengo un botón que solo me permite eliminar las sedes que sean del cliente Paco. En otra pestaña, tengo SEDES ELENA, con el mismo botón que permite eliminar las sedes que sean de Elena.

Creo que, mediante un SELECT CASE, se pueden combinar ambos códigos para crear un único botón que me permita eliminar las sedes dependiendo de la pestaña.

Este es el código implementando en los botones:

Dim BotElimPaco As String

If MsgBox("Se va a proceder a la eliminación del registro, ¿Desea usted continuar?", 1 + 32, "AVISO") = vbOKCancel Then

CurrentDb.Execute "DELETE * FROM SEDES WHERE SEDES.IdSede = " & Me.ListaPaco.Column(0), dbFailOnError

Me.ListaADSL.Requery
MsgBox "El registro fue eliminado satisfactoriamente", vbInformation, "AVISO"

Else

MsgBox "Registro no eliminado", vbInformation, "AVISO"

End If

Pero no consigo crear la unificación del código... Espero que me puedan ayudar a resolver este pequeño problema que me ha surgido.

Cualquier duda me comentáis.

2 respuestas

Respuesta
2

Con unos datos parecidos pero la ejecución es la misma. Vamos a suponer que tengo una tabla

Verás que hay clientes de Alemania. Francia y otros. Si tengo un formulario con un control de solapas como dices que tienes( en tu caso serían Clientes)

Si selecciono la solapa Francia y pulso el botón

Me ha borrado de la tabla( en tu caso sería la del origen de la fila del cuadro de lista) todos los registros de Francia. Si elijo la solapa Alemania y pulso el botón

Han desaparecido los de Alemania. Al control de pestañas le he llamado Posi(abreviatura de posición) y el código del evento Al hacer clic del botón es

DoCmd.SetWarnings False
Select Case Posi.Value
Case Is = 0
DoCmd.RunSQL "delete * from copia where pais=""Alemania"""
Case Is = 1
DoCmd.RunSQL "delete * from copia where pais=""Francia"""
Case Is = 2
DoCmd.RunSQL "delete * from copia where pais=""Estados Unidos"""
Case Is = 3
DoCmd.RunSQL "delete * from copia where pais=""Italia"""
End Select

Lo de hacer requery al cuadro de lista, sigue igual a como lo tienes.

Buenos días Icue

Lo primero disculpas por la demora, con las fiestas navideñas no he tenido mucho tiempo para conectarme. 

Lo segundo... GRACIAS! Con lo que me has indicado y unido a mi código existente para eliminar registros (En vez de usar DoCmd, he utilizado CurrentDb.Execute), he conseguido crear el botón único y no cuatro o cinco como tenía antes. Lo que me fallaba era la forma en que estructura el Select Case. Muchas gracias de nuevo, eres un genio.

De nuevo, gracias por la ayuda prestada. Y te deseo feliz año nuevo.

Un cordial saludo.

Respuesta
1

Si a las pestañas les pones el nombre de la lista, podrías hacer un código como este:

Supongamos a el control de pestañas se llama TabCtl0

Supongamos que a la primera pestaña la llamas "ListaPaco", a la segunda "ListaElena" ...

Cuando la primera pestaña esté activada, el valor de me. TabCtl0. Pages(tabctl0. Value). Caption será "ListaPaco"

Por ello el SQL podría ser:

CurrentDb.Execute "DELETE * FROM SEDES WHERE SEDES.IdSede = " & Me(me.TabCtl0.Pages(tabctl0.value).Caption).Column(0).

Buenos días Pere

Gracias por la ayuda prestada, pero he utilizado el primer código enviado por Icue, ya que para mi caso es más preciso.

No obstante, también me ha funcionado tu método.

Por lo tanto, gracias igualmente por la ayuda prestada y que tengas un feliz año nuevo.

Un cordial saludo.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas