Ricerca su Datagridview

di Frankq il
6 risposte

Buongiorno a tutti

VB.Net Visual studio 2022

Ho una Datagridview   non collegata ad un database, riempita con un file .txt

per la ricerca ho scritto questa function:

Private Function RicercaLoc(Loc As String) As Boolean
    Try
        For Each row As DataGridViewRow In DGVLocaz.Rows
            For Each Cell As DataGridViewCell In row.Cells
                If Cell.Value.ToString = Loc Then               
                    RicercaLoc = True
                    Return RicercaLoc
                    Exit Function
                End If
            Next
        Next
    Catch ex As Exception
        RicercaLoc = False
    End Try
    Return RicercaLoc
End Function

 Il tutto funziona, ma scorre tutte le celle. Siccome so quale è la colonna che contiene il codice da ricercare ho provato a modificare in questa maniera

togliendo il secondo FOR

Private Function RicercaLoc(Loc As String) As Boolean
    Try
        For Each row As DataGridViewRow In DGVLocaz.Rows
           	If row.Cells(0).Value.ToString = Loc Then
                    RicercaLoc = True
                    Return RicercaLoc
                    Exit Function
            End If
        Next
    Catch ex As Exception
        RicercaLoc = False
    End Try
    Return RicercaLoc
End Function

In compilazione non mi da errore ma in esecuzione  segnala errore

System.NullReferenceException: 'Riferimento a un oggetto non impostato su un'istanza di oggetto.'

System.Windows.Forms.DataGridViewCell.Value.get ha restituito Nothing.

Cosa ho sbagliato?

Franco

6 Risposte

  • Buongiorno. Cerca di capire su quale riga si verifica l'errore e controlla cosa contiene la cella della prima colonna, per esempio mostrando l'indice della riga nel Catch. L'Exit Function non è necessario perché è sufficiente il Return e il RicercaLoc = False starebbe meglio dopo il Next, seguito anche lì da Return.

  • Fai un controllo che la cella in questione non sia vuota 

    19/11/2025 - Frankq ha scritto:

    System.Windows.Forms.DataGridViewCell.Value.get ha restituito Nothing.

    verifica che non sia nothing a monte di 

    19/11/2025 - Frankq ha scritto:

    row.Cells(0).Value.ToString = Loc

    se non è vuota allora fai il confronto

  • Grazie per la risposta, ho risolto il problema

    Franco

  • Sarebbe corretto dire la causa e come hai risolto.

  • Scusate, ho verificato perchè era a nothing, prendevo un campo sbagliato.

    Grazie per l'aiuto

    Franco

Devi accedere o registrarti per scrivere nel forum
6 risposte