LISTVIEW NULL VALORE NON VALIDO PER INDEX

di Anonimizzato24474 il
10 risposte
Buongiorno ragazzi,
ho problemi nel leggere una listview.
Nel senso che nel loop quando trova un item a null mi da errore e mi dice "valore non valido per index".
Ho provato con isNothing oppure isEmptyt ma da lo stesso errore.
Qualcuno può aiutarmi?
Grazie

10 Risposte

  • Mostraci il loop ma soprattutto la riga che va in errore
  • Giangi1969 ha scritto:


    Nel senso che nel loop quando trova un item a null mi da errore e mi dice "valore non valido per index".
    Cosa è index? Se non mostri il codice di che parliamo?
  • Scusate ragazzi, ecco cosa intendevo dire:
    da una query estraggo dei dati dalla tabella nomi e carico una listview:


    lvsql = "select id,nome,cognome,eta from tabella_nomi"
    If pfApriTab(lvsql, dgv) Then
    If dgv.Tables(0).Rows.Count > 0 Then
    For i = 0 To dgv.Tables(0).Rows.Count - 1
    lstView.Items.Add(dgv.Tables.Item(0).Rows(i).Item("id").ToString.Trim())
    lstView.Items(ExplArr).SubItems.Add(dgv.Tables.Item(0).Rows(i).Item("nome").ToString.Trim())
    lstView.Items(ExplArr).SubItems.Add(dgv.Tables.Item(0).Rows(i).Item("cognome").ToString.Trim())
    lstView.Items(ExplArr).SubItems.Add(dgv.Tables.Item(0).Rows(i).Item("eta").ToString.Trim())
    Next
    End If
    End If

    capita che a volte nella tabella c'è il nome ma non l'età quindi viene caricato solo il nome e non l'età nella colonna.es:
    ---------------------------------
    id Nome Cognome Eta
    --------------------------------
    1 Pippo Pippo 30
    2 Pluto Pluto
    3 Topolino Topolino 23
    --------------------------------
    Effettuo dei controlli sui dati appena caricati dalla query e quando verifico ad esempio l'età che è null nella riga 2, mi da errore.
    questo è il controllo:

    if lstView.SelectedItems.Item(0).SubItems(4).Text = "" then
    exit sub
    end if

    Spero di essere stato chiaro.
    Grazie ragazzi!
  • Quanti subitems hai ?
  • 3
  • Giangi1969 ha scritto:


    da una query estraggo dei dati dalla tabella nomi e carico una listview:

    lvsql = "select id,nome,cognome,eta from tabella_nomi"
    [cut]
    capita che a volte nella tabella c'è il nome ma non l'età quindi viene caricato solo il nome e non l'età nella colonna.es:
    ---------------------------------
    id Nome Cognome Eta
    --------------------------------
    1 Pippo Pippo 30
    2 Pluto Pluto
    3 Topolino Topolino 23
    --------------------------------

    Questo è un problema da avresti dovuto risolvere a monte, ovvero il campo Eta dovrebbe avere come valore predefinito 0, mai NULL.
    Non l'hai fatto prima, lo devi fare dopo, ovvero nella query devi 'prevedere' che possa contenere NULL.
    Il COME farlo dipende da quale database stai usando, ma non l'hai indicato.

    Potresti provare così:
    lvsql = "select id,nome,cognome, iif(len(eta) > 0, eta, 0) as eta from tabella_nomi"

    Altrimenti puoi verificare se eta è NULL prima di aggiungerla al listview, ed eventualmente sostituirne il NULL con una stringa vuota.
  • Il db è MySql.
    NOn voglio inserire un valore predefiniti "0" perchè non lo voglio visualizzare nella lista.
    Cmq sto risolvendo inserendo nella lista un "" e codi non mi va in errore.
    Pensavo che si poteva gestire l'item in fase di verifica del dato nella colonna.....
  • Giangi1969 ha scritto:


    3
    ma tu qui scrivi 4
    if lstView.SelectedItems.Item(0).SubItems(4).Text = "" then
  • Mi sono sbagliato.
    id,nome,cognome e eta
  • Gli indici non iniziano da zero ?
Devi accedere o registrarti per scrivere nel forum
10 risposte