+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Cast non Valido dal tipo DBNull al tipo string

  1. #1
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Come da titolo ricevo questo errore.
    Spiego meglio con codice ed immagini così il problema sarà chiaro.
    Codice nel load del form:
    Option Strict On
    Private Sub frmprivati_Load
    numrecord = dts.Tables(0).Rows.Count - 1
     For i = 0 To numrecord
      dtgPrivati.Item(0, i).Value = dts.Tables(0).Rows(i).Item(1) 'Carico nel DataGridView nome e cognome
      dtgPrivati.Item(1, i).Value = dts.Tables(0).Rows(i).Item(2)
            Next
            indirizzo = CStr(dts.Tables(0).Rows(0).Item(3))  ' nelle relative textbox inserisco i dati
            txtIndirizzoPrivati.Text = CStr(dts.Tables(0).Rows(0).Item(3))
            txtCap.Text = CStr(dts.Tables(0).Rows(0).Item(4))
            txtCittaPrivati.Text = CStr(dts.Tables(0).Rows(0).Item(5))
            txtProvprivati.Text = CStr(dts.Tables(0).Rows(0).Item(6))
            txtTelcasaprivati.Text = CStr(dts.Tables(0).Rows(0).Item(7))
            txtCellulareprivati.Text = CStr(dts.Tables(0).Rows(0).Item(8))
            txtPostaprivati.Text = CStr(dts.Tables(0).Rows(0).Item(9))
    End Sub
    
    i campi di Access sono cos' formati:
    tutti in formato testo
    Richiesto:No
    Consenti lunghezza zero:sì
    e fin quì tutto ok.
    Posto immagine dei campi di access per spiegare meglio:
    Nome:   database.JPG
Visite:  34
Grandezza:  26.8 KB
    Come si può vedere,alcuni campi sono valorizzati ed altri sono vuoti ma se vado a selezionare una riga del Datagridview per prendere il numero di riga(che corrisponde al numero di record di access)
    ricevo il seguente errore come da immagine che allego:
    Nome:   erroreCampo.JPG
Visite:  31
Grandezza:  70.9 KB
    Dà errore sull'ultimo campo che sarebbe il campo per la posta elettronica,ho provato a mettere punti di interruzione per vedere se si bloccava anche nei campi precedenti in quanto alcuni campi erano vuoti
    ma si blocca sempre sull'ultimo,quindi,mi e vi chiedo:Ma se anche i campi precedenti sono vuoti ed essendo tutti campi di testo perchè non si blocca anche negli altri campi?
    Potrei controllare con una if DBNull.value sull'ultimo campo ma non ha senso,in questo modo dovrei farlo su tutti i campi ma però sugli altri campi non si blocca...mah...
    Non riesco a capire dove è l'inghippo...
    ℹ️ Leggi di più su sistemista ...

  2. #2
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Prova ad aggiungere una stringa vuota:
    txtPostaprivati.Text = CStr(dts.Tables(0).Rows(0).Item(9) & "")
    
    Se funziona, non serve nemmeno CStr(), probabilmente.
    ℹ️ Leggi di più su gibra ...

  3. #3
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Quote Originariamente inviato da gibra Visualizza il messaggio
    Prova ad aggiungere una stringa vuota:
    txtPostaprivati.Text = CStr(dts.Tables(0).Rows(0).Item(9) & "")
    
    Se funziona, non serve nemmeno CStr(), probabilmente.
    CStr è richiesto da Option Strict On in quanto se era Of non dava errori allora l'ho impostato su On per vedere se c'erano errori sul codice ed infatti mi segnalava errori sulle righe di codice proponendomi di mettere CStr,comunque, il suggerimento che mi hai dato non dà risultati anzi mi segnala errore
    Option Strict On non ammette operandi di tipo Object per l'operatore '&'.
    
    ℹ️ Leggi di più su sistemista ...

  4. #4
    L'avatar di sspintux
    sspintux non è in linea Very Important Person Ultimo blog: SqlServer express e connessione DAC
    Verifica con isdbnull e nelcaso sostitisci
    ℹ️ Leggi di più su sspintux ...

  5. #5
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da sistemista Visualizza il messaggio
    che mi hai dato non dà risultati anzi mi segnala errore
    Usa il + al posto di &
    ℹ️ Leggi di più su gibra ...

  6. #6
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Quote Originariamente inviato da sspintux Visualizza il messaggio
    Verifica con isdbnull e nelcaso sostitisci
    Forse mi sono spiegato male...l'errore lo fà solo sull'ultimo campo, quando, teoricamente parlando lo dovrebbe fare anche nei campi precedenti visto che prima dell'ultimo campo(posta elettronica) c'è il campo indirizzo(3°campo in access) che è vuoto e dovrebbe dare errore ed invece solo sul 9° campo.
    Potrei fare come dici tu, ma è un controsenso come già ho spiegato in precedenza,eseguire solo il controllo sull'ultimo campo e sugli altri no per me non è logico e ci deve essere una spiegazione per forza che al momento non riesco a capire,poi se è l'ultima spiaggia metterò il controllo ma non mi piace dal lato programmazione.
    ℹ️ Leggi di più su sistemista ...

  7. #7
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Quote Originariamente inviato da gibra Visualizza il messaggio
    Usa il + al posto di &
    Ho provato a mettere fuori le parentesi sia il + che & e non mi segnala errore sul codice ma dà errore.
    Cast non valido etc.etc.
    
    Mentre mettendo dentro le parentesi si + "" che & "" errore di prima "Non ammette operandi etc.etc."
    Voglio aggiungere che se non visualizzo l'ultimo campo incriminato,tutto funziona bene anche se alcuni campi sono vuoti,quindi,in pratica sono campi DBNull e invece niente...è'veramente un rompicapo...
    Codice senza la visualizzazione ultimo campo
     Private Sub dtgPrivati_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles dtgPrivati.Click
            Dim record As Integer = 0
            record = dtgPrivati.CurrentRow.Index
            txtIndirizzoPrivati.Text = CStr(dts.Tables(0).Rows(record).Item(3))
            txtCap.Text = CStr(dts.Tables(0).Rows(record).Item(4))
            txtCittaPrivati.Text = CStr(dts.Tables(0).Rows(record).Item(5))
            txtProvprivati.Text = CStr(dts.Tables(0).Rows(record).Item(6))
            txtTelcasaprivati.Text = CStr(dts.Tables(0).Rows(record).Item(7))
            txtCellulareprivati.Text = CStr(dts.Tables(0).Rows(record).Item(8))
            ' txtPostaprivati.Text = CStr(dts.Tables(0).Rows(record).Item(9))    questo campo non viene visualizzato
        End Sub
    
    Come si vede da iimmagine il campo indirizzo è vuoto ma niente errore
    Nome:   campo.JPG
Visite:  25
Grandezza:  12.7 KB
    Ultima modifica di sistemista; 04-10-2021 12:52 
    ℹ️ Leggi di più su sistemista ...

  8. #8
    Stringa vuota e null sono valori diversi. È normale che succeda, nessun rompicapo, dipende dai dati che sono stati scritti o non scritti. Usa il IsDbNull dove serve, non è un problema.
    ℹ️ Leggi di più su AntonioG ...

  9. #9
    L'avatar di sspintux
    sspintux non è in linea Very Important Person Ultimo blog: SqlServer express e connessione DAC
    ... diciamo pure che
    NULL del .NET significa :
    riferimento non valido; .... stai usando qualcosa di illegale

    DbNull :
    è il NULL dei database ed è perfettamente legale se il campo ammette NULL
    ma avendo il significato di VALORE SCONOSCIUTO ti da errore se provi ad usarlo
    per esempio come parte di una qualche espressione
    ( ... quale dovrebbe essere il risultato di 1 + DbNull oppure "abc" & DbNull ?)
    Ultima modifica di sspintux; 04-10-2021 16:31 
    ℹ️ Leggi di più su sspintux ...

  10. #10
    Sì è quello che intendevo... nessun rompicapo, se è un valore lecito per il campo bisogna tenerne conto e controllare
    ℹ️ Leggi di più su AntonioG ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Cast non valido dal tipo 'DBNull' al tipo 'String'
    Da rashid nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 13-03-2021, 15:20
  2. Risposte: 3
    Ultimo Post: 28-03-2017, 10:53
  3. Incompatibilità tra dato tipo testo di una cella e dato tipo string
    Da saveriomartino nel forum Microsoft Excel
    Risposte: 10
    Ultimo Post: 16-07-2015, 18:50
  4. Cast non valido dalla stringa " " al tipo 'Date'.
    Da iltheo nel forum ASP 3, ASP .Net
    Risposte: 2
    Ultimo Post: 17-12-2008, 17:30
  5. Cambio tipo dato (da String a Guid)
    Da sly185 nel forum Visual Basic .Net
    Risposte: 3
    Ultimo Post: 16-12-2006, 16:51