LISTVIEW NULL VALORE NON VALIDO PER INDEX

di il
10 risposte

LISTVIEW NULL VALORE NON VALIDO PER INDEX

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

  • Re: LISTVIEW NULL VALORE NON VALIDO PER INDEX

    Mostraci il loop ma soprattutto la riga che va in errore
  • Re: LISTVIEW NULL VALORE NON VALIDO PER INDEX

    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?
  • Re: LISTVIEW NULL VALORE NON VALIDO PER INDEX

    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!
  • Re: LISTVIEW NULL VALORE NON VALIDO PER INDEX

    Quanti subitems hai ?
  • Re: LISTVIEW NULL VALORE NON VALIDO PER INDEX

    3
  • Re: LISTVIEW NULL VALORE NON VALIDO PER INDEX

    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.
  • Re: LISTVIEW NULL VALORE NON VALIDO PER INDEX

    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.....
  • Re: LISTVIEW NULL VALORE NON VALIDO PER INDEX

    Giangi1969 ha scritto:


    3
    ma tu qui scrivi 4
    if lstView.SelectedItems.Item(0).SubItems(4).Text = "" then
  • Re: LISTVIEW NULL VALORE NON VALIDO PER INDEX

    Mi sono sbagliato.
    id,nome,cognome e eta
  • Re: LISTVIEW NULL VALORE NON VALIDO PER INDEX

    Gli indici non iniziano da zero ?
Devi accedere o registrarti per scrivere nel forum
10 risposte