NO PUEDO BORRAR DESDE UN LISTVIEW!!! HELPPP

01/08/2003 - 13:27 por aceror | Informe spam
Teniendo esto para cargarlo en un listview, como hago un boton para eliminar
un registro desde el listview y que se borre tambien en la base de datos.

Gracias por la ayuda...

Private Sub Form_Load()

Dim T
Dim C As Long
Dim iItem As Long

iItem = 0
T = Timer
MostrarFormEspera 0, 2


Dim tLi As ListItem
Set db = DBEngine.OpenDatabase(App.Path & "\bases/propietarios")



'Crear el recordset con la tabla que queremos manipular
Set rs = db.OpenRecordset("SELECT * FROM ficha", dbOpenSnapshot)

' Ahora colocamos las columnas



With ListView1
' El tipo de Listview que queremos es del tipo "reporte"
.View = lvwReport
' Que muestre las líneas de separación entre datos
.GridLines = True
' Que no se puedan modificar los datos del listview
.LabelEdit = lvwManual
' Añadimos las cabeceras
.ColumnHeaders.Add , , "Ref"
.ColumnHeaders.Add , , "Nombre"
.ColumnHeaders.Add , , "NIF/CIF"
.ColumnHeaders.Add , , "Direccion", 1500
.ColumnHeaders.Add , , "Movil"

End With
' Ahora cargamos los datos de la base
' mostrando un progress bar

Do Until iItem = 2
Do Until Timer - iItem >= T
With rs
' Si no hay datos...
If (.BOF And .EOF) Then
MsgBox "No se han encontrado datos"
Else
' Mostrar los datos hallados
ListView1.ListItems.Clear
.MoveFirst

Do While Not .EOF
Set tLi = ListView1.ListItems.Add(, , .Fields("Ref") & "")
tLi.SubItems(1) = .Fields("Nombre") & ""
tLi.SubItems(2) = .Fields("NIFCIF") & ""
tLi.SubItems(3) = .Fields("Direccion") & ""
tLi.SubItems(4) = .Fields("Movil") & ""

.MoveNext
Loop



End If
End With

'terminamos el progress bar

Loop
iItem = iItem + 1
MostrarFormEspera iItem, 2
Loop
MostrarFormEspera -1, 0
 

Leer las respuestas

#1 Softjaen
01/08/2003 - 20:52 | Informe spam
"aceror" escribió:

como hago un boton para eliminar un registro desde el
listview y que se borre tambien en la base de datos.




Hola

Pues tal y como tienes el código, prueba el siguiente ejemplo. Entiendo que
la variable objeto «rs» tiene ámbito a nivel del formulario.

También te indico, que para utilizar el método «Seek» del objeto
«Recordset», éste lo debes de abrir de la siguiente manera:

'Crear el recordset con la tabla que queremos manipular
Set rs = db.OpenRecordset("ficha", dbOpenTable)

Igualmente, deberás de indicar el nombre de la clave principal de la tabla
en la propiedad «Index» del objeto «Recordset».

Private Sub Command1_Click()

' Creamos un objeto «ListItem»
Dim itms As ListItem

' Buscamos el elemento seleccionado
' para hallar la clave
Set itms = ListView1.FindItem(ListView1.SelectedItem)

' Si no se encuentra ningún ListItem, salimos,
' de lo contrario lo eliminamos
If itms Is Nothing Then
MsgBox "No se ha encontrado ninguna coincidencia"
Exit Sub
End If

With itms
.EnsureVisible
.Selected = True
' Los eliminamos del control ListView
ListView1.ListItems.Remove CInt(.Index)
End With

' Eliminamos el registro de la base de datos
With rs
.Index = "PrimaryKey"
.Seek "=", ListView1.SelectedItem
If .NoMatch Then
MsgBox "¡No existe ningún registro!"
Else
.Delete
MsgBox "¡Registro eliminado!"
End If
End With

End Sub

Un saludo.

Enrique Martínez
[MS MVP - VB]

Preguntas similares