Visual Basic - CheckBox en ListView

Life is soft - evento anual de software empresarial
 
Vista:

CheckBox en ListView

Publicado por david (1 intervención) el 19/10/2011 22:20:38
Hola a todos
Tengo un ListView con checkbox y estos reciben si el tilde automaticamente segun un campo de access, o bien puedo tildarlos manualmente

Codigo:

Private Sub PreparaCabeceraLV(Lv As ListView)
Dim i As Integer

Lv.ColumnHeaders.Add , , "x", 310
Lv.ColumnHeaders.Add , , "D.C.", 900, , "ud"
Lv.ColumnHeaders.Add , , "Fecha", 1000, , "ud"
Lv.ColumnHeaders.Add , , "Paciente", 2000, , "ud"
Lv.ColumnHeaders.Add , , "Obra Social", 1440, , "ud"

End Sub

Sub Actualizar_ListView(Item As ListItem)
Dim rs As New ADODB.Recordset
Dim SQL As String

SQL = "UPDATE contratos set paso1 = " & IIf(Item.Checked, 1, 0) & _
" where id_contratos = " & CLng(Item.Tag) & ""

Set rs = Crear_Recordset(cnn, SQL)
Set rs = Nothing
End Sub

Sub Cargar_ListView(Lv As ListView, rs As ADODB.Recordset)
Dim Item As ListItem
Dim i As Integer

Lv.ListItems.Clear
Lv.ColumnHeaders.Clear

'CABECERAS
Call PreparaCabeceraLV(Lv)

Me.MousePointer = vbHourglass
If rs.RecordCount > 0 Then
rs.MoveFirst

While Not rs.EOF
Set Item = LV_Prestaciones.ListItems.Add(, , rs(0))

' almacen el id que luego se usa para el update
Item.Tag = rs("id_contratos").Value
'
If rs.Fields("documentacion") = True Then
If rs.Fields("paso1") = False Then
Item.Checked = True
End If
End If

If rs.Fields("documentacion") = True Then
Item.SubItems(1) = "Si"
Else
Item.SubItems(1) = vbNullString
End If

Item.SubItems(2) = rs.Fields("fecha_carga")
Item.SubItems(3) = rs.Fields("nombre")
Item.SubItems(4) = rs.Fields("obra")

End If
rs.MoveNext
Wend
End If
Set rs = Nothing
Me.MousePointer = vbDefault

Exit Sub
errSub:

MsgBox Err.Description, vbCritical, "Error"
Me.MousePointer = vbDefault

End Sub

Function Crear_Recordset(con As ADODB.Connection, SQL As String) As ADODB.Recordset
Dim rs As ADODB.Recordset
If con Is Nothing Then
Set Crear_Recordset = Nothing
Exit Function
End If

If cnn.State <> adStateOpen Then
MsgBox "La conexión está cerrada", vbCritical
Set Crear_Recordset = Nothing
Exit Function
End If

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open SQL, con, adOpenStatic, adLockOptimistic, adCmdText

Set Crear_Recordset = rs

Set rs = Nothing
End Function

y lo que quisiera es poder llamar a la Funcion Actualizar por medio de un Boton

ejemplo:
Private Sub cmdEnviar_Click()
Call Actualizar_ListView
Form1.Refresh
End Sub

Pero me da el error que el argumento no es opcional


Alguna idea de como poder crear ese boton
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder