¿Cómo puedo hacer una selección múltiple de campos que no están juntos en la vista hoja de datos de una tabla?

Quiero borrar varios registros al mismo tiempo en una tabla de access vista hoja de datos. Quiero probar con control pero no funciona. ¿Qué puedo hacer?

3 respuestas

Respuesta

Para eliminar varios registros a la vez deben tener un campo común, por ejemplo, eliminar todos los registros de la ciudad de Almería. O, aquellos registros en que su teléfono empiece, por ejemplo, por 999 o ...

Puedes hacerlo con una consulta de eliminación o con código VB desde, por ejemplo, un botón de un formulario poniendo algo como

Docmd.runsql"delete * from Nombretabla where ciudad like ""Almería"""

o

Docmd.runsql"delete * from nombretabla where ciudad=""Almería"" and telefóno like ""999""&*"

Puedes encadenar hasta 99 criterios AND o OR. Mira si puedes "afinar" en la eliminación.

Sería conveniente que pusieras una imagen de la tabla.

Respuesta

Exactamente que deseas, porque interpreto que la selección se desea hacerla manualmente en el formulario en vista hoja de datos.

Adelanto que para borrar un registro hay que seleccionar el registro (no es suficiente con uno o mas campos) lo más que se podrá hacer es vaciar el contenido de esos campos seleccionados, pero aún vacíos seguirán en la tabla.

Respuesta

No puede hacer una selección múltiple en vista hoja de datos para eliminar varios registros, como alternativa puede utilizar un cuadro de lista y confingurarlo como selección "Simple". Observe este ejemplo

Hago clic sobre el cliente que quiero eliminar de la tabla, hago clic en el botón Eliminar y obtengo:

Hago clic en y obtengo:

Con esto el cuadro de lista ahora no aparecen los registros eliminados.

CÓDIGO DEL BOTÓN ELIMINAR

Private Sub btnGuardar_Click()
 On Error GoTo hay_error
 Dim sFiltro As String
 Dim varPos As Variant
 Dim strSeparador As String
 If lstClientes.ItemsSelected.Count = 0 Then
    MsgBox "No ha seleccionado los registros a retirar", vbInformation, "Le informo"
    Exit Sub
 End If
  strSeparador = vbCrLf
 For Each varPos In lstClientes.ItemsSelected
       sFiltro = sFiltro & Format(Me.lstClientes.Column(2, varPos), "##,###") & strSeparador
 Next varPos
 If sFiltro <> "" Then
  sFiltro = Left(sFiltro, Len(sFiltro) - 1)
 End If
 If MsgBox("Cédula" & vbCrLf & "--------------" & vbCrLf & sFiltro & vbCrLf & vbCrLf & _
 "¿Elimina estos registros? ", vbQuestion + vbYesNo + vbDefaultButton2, "Eliminar") = vbYes Then
  For Each varPos In lstClientes.ItemsSelected
       CurrentDb.Execute "DELETE FROM tblterceros  WHERE idte=" & Me.lstClientes.Column(0, varPos)
  Next varPos
   If Err.Number = 0 Then
      MsgBox "Registros eliminados satisfactorialmente", vbInformation, "Eliminar"
      Me.lstClientes.Requery
   End If
 End If
hay_error_exit:
   Exit Sub
hay_error:
   MsgBox "Ocurrió el error " & Err.Number & vbCrLf & Err.Description, vbCritical, "Error..."
   Resume hay_error_exit
End Sub

Para adaptarlo a su necesidad cambie el nombre de la tabla tblterceros por su su tabla y el camo idte por el ID respectivo.

Ahora, si quiere el ejemplo lo puede solicitar a [email protected] favor en el asunto hacer referencia a la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas