Salve,
ho popolato una listview con dei record presi da un db.
Come faccio a passare ad un altro form i vari id in base all'item che seleziono?
Un pò come facevo com la propietà itemdata del controllo listbox
tnx!!!
Salve,
ho popolato una listview con dei record presi da un db.
Come faccio a passare ad un altro form i vari id in base all'item che seleziono?
Un pò come facevo com la propietà itemdata del controllo listbox
tnx!!!
Parto dal presupposto che l'id sia scritto nella proprietà Key dell'Item.
se hai una variabile pubblica dichiarata in un modulo puoi fare così:
se invece non hai la variabile dichiarata nel modulo, dovresti dichiarare una variabile pubblica pbID all'interno del form che devi aprire e poi fare così:codice:pbID = CLng(listView.SelectedItem.Key) 'poi puoi aprire il form e usare tranquillamente pbID
spero di essermi spiegata benecodice:Form.pbID = CLng(listView.SelectedItem.Key) Form.Show![]()
05.08.2005 - by alka
Auguri all'angelo custode dei moderatori.
Grazie potresti dirmi come faccio a scrivere l'id nella proprietà key dell'item?
come carichi la listview? da dove li prendi i dati?Originariamente inviato da Beziel
Grazie potresti dirmi come faccio a scrivere l'id nella proprietà key dell'item?
l'id è un numerico long giusto?
05.08.2005 - by alka
Auguri all'angelo custode dei moderatori.
...
With ListView1.ListItems
.Add, ,rs.Fields("nome").Value, 1
End With
Come puoi vedere li carico da un db, volevo inserire l'id del record.
si l'id è un numerico long
perfetto.Originariamente inviato da Beziel
...
With ListView1.ListItems
.Add, ,rs.Fields("nome").Value, 1
End With
Come puoi vedere li carico da un db, volevo inserire l'id del record.
si l'id è un numerico long
Nella key dell'item è impossibile caricare un valore numerico, non lo accetta nemmeno convertito in stringa, quindi io per ovviare a questo inconveniente, aggiungo un carattere prima del numero (id), in questo modo:
poi, quando faccio doppio click sull'item scrivo questo:codice:With ListView1.ListItems .Add, ,"K" & rs.Fields("nome").Value, 1 End With
codice:Dim lngID As Long lngID = CLng(Left(ListView1.Selected.Key, 2))![]()
05.08.2005 - by alka
Auguri all'angelo custode dei moderatori.
Solo che nel mio caso il campo nome non è l'id.
Io volevo che nella listview venisse visualizzato quel campo, ma passasse il campo id.
Puoi aiutarmi x favore?!?
Il consiglio di Ladyblu è valido solo che probabilmente tu utilizzi l'ID del record sul DB per effettuare degli aggiornamenti.
Se utilizzi la proprietà KEY questa accetta solo dati testo e non numerici quindi ecco spiegato perchè Ladyblue HA AGGIUNTO LA "K".
Ma per velocizzare la cosa, in quanto dovresti parserizzare la KEY per ricavare poi l'ID del record, ti conviene utilizzare la TAG che memorizza qualsiasi dato e non è indicizzato come invece è la KEY. Mi spiego se un record dovesse apparire due volte nella stessa listview avresti dei problemi, come li avresti se usi più tabelle che duplicherebbero uno stesso ID. Usa la TAG che è più diretta.
Il dubbio non è piacevole, ma la certezza è ridicola. Solo gli imbecilli son sicuri di ciò che dicono.
aspetta, fammi capire:Originariamente inviato da Beziel
Solo che nel mio caso il campo nome non è l'id.
Io volevo che nella listview venisse visualizzato quel campo, ma passasse il campo id.
Puoi aiutarmi x favore?!?
tu hai un recordset contenente un id e un nome;
nella listview vuoi vedere come testo il nome e come key l'id
giusto?
se è così, il caricamento della listview va modificato così:
ho scritto rs("nome") ed rs("id") al posto di rs.Fields("nome").Value e rs.Fields("id").Value:codice:With ListView1.ListItems .Add(Text:=rs("nome"),Key:="K" & rs("id")) End With
è la stessa cosa, solo che la forma che ho usato io è abbreviata
anche l'assegnazione di Text e Key le ho scritte diversamente, sono più pratiche; infatti basta scrivere quale proprietà si vuole assegnare seguita da := e vb la riconosce automaticamente.
05.08.2005 - by alka
Auguri all'angelo custode dei moderatori.