Oppure

Loading
09/06/10 12:04
clode87
ciao a tutti!

voglio testare se un dato del mio database è dbnull e uso la seguente sintassi:


If (IsDBNull(eRow.DataAtt)) Then



Else


End If

dove erow è una riga del mio DB,

come risposta il programma salta a questa funzione che ha creato automaticamente:


<Global.System.Diagnostics.DebuggerNonUserCodeAttribute()> _
Public Property DataScad() As Date
Get
Try
Return CType(Me(Me.tableLicenzaN.DataScadColumn),Date)
Catch e As Global.System.InvalidCastException
Throw New Global.System.Data.StrongTypingException("Il valore della colonna 'DataScad' nella tabella 'LicenzaN' è DBNull.", e)
End Try
End Get
Set
Me(Me.tableLicenzaN.DataScadColumn) = value
End Set
End Property
il dataset è impostato con il comando di lanciare un'eccezione quando il valore è null, togliendo questo comando non mi compila più il progetto....

quindi che fare?
aaa
09/06/10 13:17
the_angel
Postato originariamente da clode87:


il dataset è impostato con il comando di lanciare un'eccezione quando il valore è null, togliendo questo comando non mi compila più il progetto....

quindi che fare?


Questa cosa non mi torna....che significa?

Che senso ha verificare e poi scatenare l'eccezione?
aaa
09/06/10 13:22
clode87
perchè inizialmente il dato non ammetteva null.... ho usato il wizard per creare il database... quindi presumo che si sia autosettato così....

poi ho cambiato il tipo di dato( ho ammesso null) ma penso che sia restata l'eccezione.....
aaa
09/06/10 14:09
the_angel
Postato originariamente da clode87:

perchè inizialmente il dato non ammetteva null.... ho usato il wizard per creare il database... quindi presumo che si sia autosettato così....

poi ho cambiato il tipo di dato( ho ammesso null) ma penso che sia restata l'eccezione.....


Togli la funziona e allega una screenshot dell'errore...
questa cosa mi è nuova...
aaa
09/06/10 15:00
clode87
risolto!:k::k::k:

utilizzando la fantastica funzione che autogenera nel caso in cui un campo può avere valo nullo!

If (eRow.IsDataAttNull) Then



Else


End If

non so se sono io che ho pasticciato troppo con il dataset oppure è obbligatorio usare questa funzione per non fargli chiamare l'eccezione....
ma suppongo sia la seconda perchè senò crea una funzione per niente....8-|
aaa
09/06/10 15:14
the_angel
Boh,io quando lavoro con i dataset...
li dichiaro, e gli butto dentro i risultati della query...
aaa
12/06/10 16:45
Il Totem
A dire la verità il codice autogenerato è pessimo per quanto riguarda la gestione di DBNull. Sarebbe stato molto più elegante restituire un tipo Nullable che fosse Nothing nel caso la corrispondente colonna riportasse DBNull. Questo avrebbe evitato l'errore lanciato dalla proprietà e la necessità di scrivere una funzione Is[Nome]Null per ogni attributo.

Se ti va, puoi correggere:
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute()>  _
Public Property DataScad() As Date?
  Get
     Try
        Return CType(Me(Me.tableLicenzaN.DataScadColumn), Date)
     Catch e As Global.System.InvalidCastException
        Return Nothing
     End Try
  End Get
  Set
     Me(Me.tableLicenzaN.DataScadColumn) = value
  End Set
End Property 
aaa