Editar un lisviuw con ado
Ejemplo que abre un formulario para editar el elemento actual del Listview.
El ejemplo requiere de dos formularios. Uno que contiene el control Listview ( Form1 ) en el cual se visualizan los registros del Recordset ADO, y otro formulario (Form2) que crea en forma dinámica los controles textbox para cada campo del registro actual, y que permite editar los datos.Importante: el ejemplo solo permite edtar el registro seleccionado, pero no permite eliminar y agregar nuevos
Nota: en este enlace hay un simple formulario Abm que también usa Ado para editar un Lv y poder realizar Altas, bajas y modificaciones entre otras opciones
Formularios
Pasos para crear el ejemplo
* Antes que nada incluir en el proyecto la referencia a Microsoft Activex dataObject para poder usar ADO
* En el Form1 agregar un control Listview
* En el Form2 dos CommandButton ( CmdAceptar y CmdCancelar ) y también un control textbox que forme una matrz, es decir un Text1(0). Luego a partir de este se crean los demás
* Agregar un módulo bas
Código en el Módulo bas
Texto planoImprimir
1. Option Explicit
2.
3.'Sub para cargar los datos de la tabla en el control ListView
4. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
5. Sub Cargar_ListView( _
6. ListView As ListView, _
7. SQL As String, _
8. Cnn As ADODB.Connection)
9.
10. Dim Ant_Item As Long
11. Dim Campo As Integer
12.
13. On Error GoTo ErrSub
14.
15. Dim rst As ADODB.Recordset
16.
17. 'Variable para los SubItem del Listview
18. Dim Item As ListItem
19. Dim i_SubItem As Long
20.
21. 'Almacenar el Item actual seleccionado _
22. para luego reestablecerlo
23. If Not ListView.SelectedItem Is Nothing Then
24. Ant_Item = ListView.SelectedItem.Index
25. End If
26. 27. 'Crear un Nuevo objeto Recordset
28. Set rst = New Recordset
29.
30. 'Llenar el Recordset
31. rst.Open SQL, Cnn, adOpenDynamic, adLockOptimistic
32.
33. 'Vista de reporte
34. ListView.View = lvwReport
35.
36. ' Eliminar los item y los encabezado de columna
37. ListView.ListItems.Clear 38. ListView.ColumnHeaders.Clear
39.
40. ListView.Parent.MousePointer = vbHourglass
41.
42. 'Agregar los nombres campo junto con los _
43. encabezados de columna para el ListView
44. For Campo = 0 To rst.Fields.Count - 1
45. ListView.ColumnHeaders.Add , , rst.Fields(Campo).Name
46. Next
47.
48. ' Recorrer todos los registros del Recordset
49. While Not rst.EOF
50. 'Agregar el Item
51. Set Item = ListView.ListItems.Add(, , rst.Fields(0))
52.
53. i_SubItem = 1
54.
55. 'Agregar los SubItem al ListView mediante la variable Item
56. For Campo = 1 To rst.Fields.Count - 1
57. 'si el dato no es de tipo Null lo agrega
58. If Not IsNull(rst.Fields(Campo)) Then
59. Item.SubItems(i_SubItem) = rst.Fields(Campo)
60. End If
61.
62. i_SubItem = i_SubItem + 1
63.
64. Next
65.
66. 'Ir al Siguiente registro
67. rst.MoveNext
68. Wend
69. 'Reestablecer el puntero del mouse
70. ListView.Parent.MousePointer = vbDefault
71.
72. 'seleccionar el item que estaba seleccionado
73. If Not ListView.SelectedItem Is Nothing And Ant_Item <> 0 Then
74. ListView.ListItems(Ant_Item).Selected = True
75. End If
76.
77. Exit Sub
78. ...
Regístrate para leer el documento completo.