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

    [VB.NET] Errore con DBNull

    Ciao, ho un problema con la lettura dei dati da access...
    Ogni volta che leggo un valore da un campo vuoto ricevo l'errore che è impossibile convertire dbnull in stringa (complimenti a microsoft, ci voleva tanto a farlo diventare ""??)
    A questo punto ho fatto una funzione che controlla se la lettura del campo restituisce dbnull prima di utilizzare il valore del campo stesso.
    codice:
    If Convert.IsDBNull(rec2("nome")) Then
        testo_campo(j) = ""
    Else
        testo_campo(j) = decripta_testo(rec2("nome").value)
    End If
    Come dalla guida di vb, la funzione Convert.IsDBNull restituisce un valore boolean che indica se il campo in esame è vuoto.
    Eseguendo il codice ho notato che restituisce sempre false, di conseguenza la lettura su campo nullo avviene sempre e ottengo l'errore.
    Come posso fare per evitare che questo avvenga?
    Grazie, Ciao
    http://www.firesoftweb.it - Servizi gratuiti per il tuo sito web: forum, guestbook, contatori visite...

  2. #2

    Soluzione Problema

    Io ho risolto cosi':

    If rec2("nome") Is DBNull.Value Then
    testo_campo(j) = ""
    Else
    testo_campo(j) = decripta_testo(rec2("nome").value)
    End If
    Secondo me funziona!
    Se cercate un software visitate il sito della mia software house
    Hobby Vitual: il nuovo sito per tutti i collezionisti!

  3. #3
    Ciao, grazie ma purtroppo non funziona neanche cosi...
    In giro per internet ho trovato 4 o 5 soluzioni diverse, e nessuna di queste mi ha risolto il problema.
    Qualsiasi condizione faccio, il risultato è sempre false...
    È un controsenso... se verifico con una condizione se è DbNull mi dice NO, poi quando esegue il comando dice "Cast non valido dal tipo 'DBNull' al tipo 'String'"...
    I soliti misteri dell'informatica, mi sa che faccio prima a impostare i campi del db "not null" e riempirli di default con uno spazio...
    http://www.firesoftweb.it - Servizi gratuiti per il tuo sito web: forum, guestbook, contatori visite...

  4. #4
    Originariamente inviato da dado86ssj
    Ciao, grazie ma purtroppo non funziona neanche cosi...
    In giro per internet ho trovato 4 o 5 soluzioni diverse, e nessuna di queste mi ha risolto il problema.
    Qualsiasi condizione faccio, il risultato è sempre false...
    È un controsenso... se verifico con una condizione se è DbNull mi dice NO, poi quando esegue il comando dice "Cast non valido dal tipo 'DBNull' al tipo 'String'"...
    I soliti misteri dell'informatica, mi sa che faccio prima a impostare i campi del db "not null" e riempirli di default con uno spazio...
    In effetti se vedi il mio esempio non ho controllato il campo vuoto... non e' che viene considerato come ""...
    Prova cosi' allora:

    If rec2("nome") Is DBNull.Value OrElse rec2("nome").toString.Trim="" Then
    testo_campo(j) = ""
    Else
    testo_campo(j) = decripta_testo(rec2("nome").value)
    End If
    Probabilmente e' piu' sicuro cosi', potrebbe non essere null il campo ma vuoto...
    Se cercate un software visitate il sito della mia software house
    Hobby Vitual: il nuovo sito per tutti i collezionisti!

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Re: [VB.NET] Errore con DBNull

    Originariamente inviato da dado86ssj
    Ciao, ho un problema con la lettura dei dati da access...
    Ogni volta che leggo un valore da un campo vuoto ricevo l'errore che è impossibile convertire dbnull in stringa (complimenti a microsoft, ci voleva tanto a farlo diventare ""??)
    Un campo stringa nullo è diverso da un campo stringa vuoto, quindi direi che Microsoft ha fatto bene, poiché è necessario distinguere.

    Originariamente inviato da dado86ssj
    A questo punto ho fatto una funzione che controlla se la lettura del campo restituisce dbnull prima di utilizzare il valore del campo stesso. [...]
    Sei sicuro che l'errore sia dovuto a quel codice e non ad una condizione interna o ad un'altra istruzione? Hai eseguito il debug passo per passo, aiutandoti con qualche watch per verificarlo?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Si, ho eseguito il debug passo per passo, e l'errore è proprio quello...
    Ho provato a fare una query in access per rendere tutti i campi " " e infatti non ricevo piu l'errore, cio significa che tutto dipendeva dal dbnull...
    In ogni caso questa è solo una soluzione temporanea, proverò il codice che mi ha segnalato simon78 e vi farò sapere.
    Grazie
    http://www.firesoftweb.it - Servizi gratuiti per il tuo sito web: forum, guestbook, contatori visite...

  7. #7
    Io risolvo così:

    Questo:
    codice:
    rec2("nome").ToString
    se rec2("nome") è uguale a DBNull, restituisce ""
    zoodany..

    www.zoodany.it

  8. #8
    Originariamente inviato da zoodany
    Io risolvo così:

    Questo:
    codice:
    rec2("nome").ToString
    se rec2("nome") è uguale a DBNull, restituisce ""
    Scusa ma non sono convinto funzioni, secondo me non restituisce blank ("") ma ti da' errore se il campo e' dbNull... probabilmente dipende da che db usi, attento che se cambi db potrebbe incasinarti l'applicazione!
    Se cercate un software visitate il sito della mia software house
    Hobby Vitual: il nuovo sito per tutti i collezionisti!

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.