Duda sobre ListView

carolina
13 de Mayo del 2004
Hola,
tengo un ListView donde cargo datos desde una base de datos. Tengo que conseguir que al hacer doble click sobre cualquiera de las filas (al hacer click en cualquiera de las casillas marco toda la fila automaticamente) poder recuperar los datos que en esta fila aparecen.
Os puede parecer una tonteria pero llevo unso dias peleandome con eso y no lo consigo.

Muchas gracias

Adrian
13 de Mayo del 2004
Aqui te pongo un codigo de como agregar editar y elimnar registros, segun selecciones un item en el listview, tendras que modificarlo segun lo necesites

Dim cod As String



Private Sub cmdAceptar_Click()

Unload Me
End Sub

Private Sub cmdAgregar_Click()
Dim rsEmpresa As New ADODB.Recordset
If txtDescEmpresa = "" Then
MsgBox "La razon social o nombre de la empresa no es correcto"
Exit Sub
End If
strSql = "select * from Empresa"
rsEmpresa.Open strSql, MDIForm1.DBporteria, adOpenStatic, adLockOptimistic
rsEmpresa.AddNew
rsEmpresa!CodEmpresa = txtCodEmpresa
rsEmpresa!DescEmpresa = txtDescEmpresa
rsEmpresa.Update
rsEmpresa.Close
Set rsEmpresa = Nothing
CargarLista
limpiar

End Sub



Private Sub cmdAnular_Click()
Dim rsTemp As New ADODB.Recordset
'cod = ListView.SelectedItem.Text 'aqui asigna el item que selecciona en el listview
If cod = "" Then
MsgBox "seleccione un registro de la lista"
Else
rsTemp.Open "Select * From Empresa Where CodEmpresa='" & cod & "'", MDIForm1.DBporteria, adOpenKeyset, adLockOptimistic, adCmdText
If MsgBox("Esta seguro que desea eliminar este Registro", vbYesNo) = vbYes Then
If MsgBox("Esta realmente seguro????????", vbYesNo) = vbYes Then
rsTemp.Delete
CargarLista
rsTemp.Clone
Set rsTemp = Nothing
limpiar
End If
End If
End If
End Sub

Private Sub cmdEditar_Click()
Dim rsTemp As New ADODB.Recordset
If txtDescEmpresa = "" Then
MsgBox "La razon social o nombre de la empresa no es correcto"
Exit Sub
End If
rsTemp.Open "Select * From Empresa Where CodEmpresa='" & cod & "'", MDIForm1.DBporteria, adOpenKeyset, adLockOptimistic, adCmdText
rsTemp!CodEmpresa = txtCodEmpresa
rsTemp!DescEmpresa = txtDescEmpresa
rsTemp.Update
CargarLista
limpiar
cmdAnular.Enabled = False
End Sub

Private Sub cmdNuevo_Click()
limpiar
txtCodEmpresa = UltimoCod()
txtDescEmpresa.SetFocus
txtCodEmpresa.Locked = True

cmdAnular.Enabled = False
cmdEditar.Enabled = False
cmdAgregar.Enabled = True
End Sub

Private Sub Form_Initialize()
cmdAnular.Enabled = False
cmdEditar.Enabled = False
End Sub

Private Sub Form_Load()
ListView.ColumnHeaders.Add , , "CodEmpresa", 1500
ListView.ColumnHeaders.Add , , "DescEmpresa", 2000
CargarLista
End Sub


Private Sub CargarLista()
Dim rsTemp As New ADODB.Recordset
Dim lstItem As ListItem
ListView.ListItems.Clear
rsTemp.Open "Empresa", MDIForm1.DBporteria, adOpenKeyset, adLockOptimistic, adCmdTable
While Not rsTemp.EOF
Set lstItem = ListView.ListItems.Add(, , rsTemp!CodEmpresa & "")
lstItem.SubItems(1) = rsTemp!DescEmpresa
rsTemp.MoveNext
Wend
rsTemp.Close
Set rsTemp = Nothing
End Sub

Private Sub limpiar()
txtCodEmpresa = ""
txtDescEmpresa = ""
End Sub

Private Function UltimoCod() As String
Dim rsTemp As New ADODB.Recordset
rsTemp.Open "SELECT Max([Empresa].[CodEmpresa]) AS CodEmpresa FROM Empresa;", MDIForm1.DBporteria, adOpenKeyset, adLockOptimistic, adCmdText
If IsNull(rsTemp!CodEmpresa) Then
UltimoCod = "0001"
Else
UltimoCod = FillStr(Val(rsTemp!CodEmpresa) + 1, 4)
End If
rsTemp.Close
Set rsTemp = Nothing
End Function

'funcion que lee el registro segun el codigo que selecciona en el lisview
Private Sub Leer()
Dim rsTemp As New ADODB.Recordset
cod = ListView.SelectedItem.Text 'aqui asigna el item que selecciona en el listview
rsTemp.Open "Select * From Empresa Where CodEmpresa='" & cod & "'", MDIForm1.DBporteria, adOpenKeyset, adLockOptimistic, adCmdText
txtCodEmpresa = rsTemp!CodEmpresa
txtDescEmpresa = rsTemp!DescEmpresa
rsTemp.Close
Set rsTemp = Nothing

End Sub


Private Sub Form_Unload(Cancel As Integer)
frmPersonas.cargarcombo

End Sub

Private Sub ListView_Click()
Leer
cmdAnular.Enabled = True
cmdEditar.Enabled = True
cmdAgregar.Enabled = False
End Sub

Cualquier cosa que no le entiendas me avisas.
El botom agregar ovbialo porque llama a otra funcion
Saluds Adrian