Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697

    [vb6] passaggio id listview

    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!!!

  2. #2
    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ì:
    codice:
      pbID = CLng(listView.SelectedItem.Key)
      'poi puoi aprire il form e usare tranquillamente pbID
    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:
      Form.pbID = CLng(listView.SelectedItem.Key)
      Form.Show
    spero di essermi spiegata bene

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  3. #3
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    Grazie potresti dirmi come faccio a scrivere l'id nella proprietà key dell'item?

  4. #4
    Originariamente inviato da Beziel
    Grazie potresti dirmi come faccio a scrivere l'id nella proprietà key dell'item?
    come carichi la listview? da dove li prendi i dati?
    l'id è un numerico long giusto?

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  5. #5
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    ...
    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

  6. #6
    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
    perfetto.
    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:
    codice:
    With ListView1.ListItems 
      .Add, ,"K" & rs.Fields("nome").Value, 1 
    End With
    poi, quando faccio doppio click sull'item scrivo questo:
    codice:
    Dim lngID As Long
    lngID = CLng(Left(ListView1.Selected.Key, 2))

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  7. #7
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    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?!?

  8. #8
    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.

  9. #9
    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?!?
    aspetta, fammi capire:
    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ì:
    codice:
    With ListView1.ListItems 
      .Add(Text:=rs("nome"),Key:="K" & rs("id"))
    End With
    ho scritto rs("nome") ed rs("id") al posto di rs.Fields("nome").Value e rs.Fields("id").Value:
    è 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.

  10. #10
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    Grazie era quello che mi serviva :quote:

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.