Oppure

Loading
26/11/07 21:04
moet
Data listview riempita da database vorrei dopo aver selezionato riga con il mouse (id,nome, cognome) la cancellazione sia da database che da listview anche con un commanbutton va bene. Grazie
aaa
27/11/07 9:25
LuigiBiasi
Ciao, io non ho mai lavorato con le listview, sto imparando adesso.
Per aggiungere elementi si fa:
Dim c As ListItem
Private Sub Form_Load()
Dim i As Integer
ListView1.View = lvwReport
ListView1.ColumnHeaders.Add , "col1", "ID", 100
ListView1.ColumnHeaders.Add , "col2", "Nome"
ListView1.ColumnHeaders.Add , "col3", "Cognome"
For i = 1 To 5
Set c = ListView1.ListItems.Add(, , CStr(i))
c.SubItems(1) = "mionome"
c.SubItems(2) = "miocognome"
Next i
End Sub

elimina l'elemento 4.
Private Sub Command1_Click()
Dim i
ListView1.ListItems.Remove (4)
End Sub

Il problema è riuscire a trovare l'indice dell'elemento selezionato.
Ciao.
Ultima modifica effettuata da LuigiBiasi 27/11/07 9:28
aaa
27/11/07 9:46
LuigiBiasi
trovato...
questo è il codice completo:
Dim c As ListItem


Private Sub Command1_Click()
For Each c In ListView1.ListItems
If c.Selected Then
ListView1.ListItems.Remove c.Index
Exit For
End If
Next
End Sub


Dim i As Integer
ListView1.View = lvwReport
ListView1.ColumnHeaders.Add , "col1", "ID", 100
ListView1.ColumnHeaders.Add , "col2", "Nome"
ListView1.ColumnHeaders.Add , "col3", "Cognome"
For i = 1 To 5
Set c = ListView1.ListItems.Add(, , CStr(i))
c.SubItems(1) = "mionome"
c.SubItems(2) = "miocognome"
Next i

Questo codice è un esempio di utilizzo della listview.
Ciao.
aaa
27/11/07 10:05
LuigiBiasi
comunque visto che la cosa non è particolarmente difficile ho completato il codice:
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim c As ListItem
Dim n As Integer

Private Sub Command1_Click()
Dim ind As Integer
For Each c In ListView1.ListItems
If c.Selected Then
ind = c.Index
ListView1.ListItems.Remove c.Index
Exit For
End If
Next
cn.Execute "Delete from [b]nometabella[/b] where id = " & CStr(ind)
End Sub

Private Sub Form_Load()
Dim i As Integer
ListView1.View = lvwReport
ListView1.ColumnHeaders.Add , "col1", "ID", 100
ListView1.ColumnHeaders.Add , "col2", "Nome"
ListView1.ColumnHeaders.Add , "col3", "Cognome"
n = 0
cn.Open "File Name=" & "pathfile.udl"
rs.Open "sample2", cn, 3, 3
InsertInListView
End Sub
Public Function InsertInListView()
While Not rs.EOF

n = n + 1
'Set c = ListView1.ListItems.Add(, , CStr(n))
Set c = ListView1.ListItems.Add(, , rs("ID"))
c.SubItems(1) = rs("Nome")
c.SubItems(2) = rs("Cognome")
rs.MoveNext
Wend

End Function

Private Sub Form_Unload(Cancel As Integer)
rs.Close
cn.Close

End Sub


L'ho testato e funziona perfettamente.

ATTENZIONE il campo id del database può essere settato come chiave primaria e bisogna precisare di incrementarsi da solo di 1, altrimenti lo devi eseguire nel codice, quando aggiungi i record..
MOLTO IMPORANTE: Quando viene eliminato un record nel database, i valori di ID vanno rimessi in ordine altrimenti il codice non funzionera, quindi ti consiglio di incrementare ID nel codice quando aggiungi una record.
Ciao.
Ultima modifica effettuata da LuigiBiasi 27/11/07 10:14
aaa
27/11/07 13:58
moet
Precisissimooooo GRAZIE ! :k:
aaa
28/11/07 17:17
moet
Sai che ho scoperto ora che mi cancella il dato da listview ma non me lo cancella nello stesso momento da db ?!?!?

strano! non da neanche errori e la sintassi è perfetta.
aaa
28/11/07 17:22
moet
OK FATTA !!!!!!

RS.OPEN stringa
rs.Open "Tabella1", cn, 3, 3
....cancella.....
aaa
28/11/07 17:48
LuigiBiasi
scusa ma non ho capito il problema??!!8-|
aaa