Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB.Net] Errore procedimento

    Salve a tutti, sto cercando di risolvere un problema riguardo una datagrid, ma non ci riesco..

    Posto il codice

    codice:
    Sub coloreasd() 
         Dim numero As Byte 
         Dim pipo As String
    
         If dgvTabella.CurrentRow.Cells(9).Value.ToString = "" Then
              numero = 0 
         Else 
              pipo = dgvTabella.CurrentRow.Cells(9).Value.ToString 
              MsgBox(pipo) 
         End If 
    End Sub
    In pratica se seleziona una riga devo avere in un msgbox il valore di "pipo", ma quando avvio mi compare un errore che mi dice:"Riferimento a un oggetto non impostato su un'istanza di oggetto."

    cosa dovrei fare per risolvere?
    grazie in anticipo a tutti

  2. #2
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    In base a quello che ci hai detto (quindi all'interno di quella routine) le uniche cose che potrebbero dare quell'errore sono:

    1)- dvgTabella dichiarato ma non inizializzato;
    2)- CurrentRow = Nothing (nessuna riga selezionata);
    3)- Nella riga selezionata non esiste la 10° cella (se non ricordo male Cells lavora in base zero);

    Senza vedere il resto del codice o saperne un po' di più non c'è modo di aiutarti meglio

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  3. #3
    ciao, grazie per la risposta
    allora ho creato la tabella da codice, ci sono 10 colonne. ti posto il codice:

    codice:
    Private Sub Preparazione_tabella()
    dgvTabella.ColumnCount = 10 
    
    With dgvTabella
     .Columns(0).Name = "Nome"
     .Columns(1).Name = "Cognome"
     .Columns(2).Name = "Età"
     .Columns(3).Name = "Città"
     .Columns(4).Name = "Indirizzo" 
    .Columns(5).Name = "Codice Fiscale"
     .Columns(6).Name = "Data di nascita"
     .Columns(7).Name = "Cellulare"
     .Columns(8).Name = "Note"
     .Columns(9).Name = "Occ." 
    .SelectionMode = DataGridViewSelectionMode.FullRowSelect
     .MultiSelect = True
     .RowHeadersVisible = False 
    End With 
    
    dgvTabella.Columns(9).Width = 40
     dgvTabella.Columns(8).Width = dgvTabella.Width / 2
     dgvTabella.Columns(6).Width = 110 
    
    End Sub
    la tabella è inizialiizzata


    ciao

  4. #4
    risolto così:

    codice:
    Dim parolachiave As String 
    Dim passatempo As Byte
    
    If dgvTabella.CurrentRow.Cells(9).Value <> "" Then
         parolachiave = dgvTabella.CurrentRow.Cells(9).Value.ToString()
    Else
         parolachiave = "vuoto"
    End If
    ho solamento sostituito pipo con parolachiave e numero con passatempo..

    ciaoo

  5. #5
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    Originariamente inviato da inviasubito

    ho solamento sostituito pipo con parolachiave e numero con passatempo..

    ciaoo
    grazie, sono errori che mi capita di fare spesso perciò mi segno subito questi due nomi magici... parolachiave e passatempo, chi l'avrebbe mai detto, non si finisce mai di imparare.

    a parte le battute, il problema era nell'If, se la cella è vuota Value è Nothing e su oggetti Nothing non si possono richiamare funzioni come ToString.
    Poichè adesso non richiami ToString ma confronti direttamente Value in caso di celle vuote non ti viene sollevata l'eccezione. Il fatto che funziona confrontando Value con "" è magia del compilatore sulla quale non si dovrebbe contare. Value è di tipo Object e andrebbe confrontato con Nothing.

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.