Groups | Blog | Home
all groups > dotnet ado.net > october 2007 >

dotnet ado.net : Null Dates in Dataset


Robert E. Flaherty
10/25/2007 10:19:00 AM
Using C# 2.0 & SQL Server 2000, have a stored procedure that return 0, 1, or
more rows. At least one of the columns is a date and it may null. I have
created an XSD of the output from the stored proc. The entry for the
nullable date column is "<xs:element name="Sent_Dttm" minOccurs="0"
type="xs:dateTime" nillable="true"></xs:element>". I copied the XSD to the
C# 2.0 windows app I am developing and it nicely generates a strongly typed
dataset.

The problem is I get an error when attempting to access this column in the
dataset when the value is null:
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public System.DateTime Sent_Dttm {
get {
try {
return
((System.DateTime)(this[this.tableOwizCommDoc.Sent_DttmColumn]));
}
catch (System.InvalidCastException e) {
throw new System.Data.StrongTypingException("The
value for column \'Sent_Dttm\' in table \'OwizCommDoc\' is DBNull.", e);
}
}
set {
this[this.tableOwizCommDoc.Sent_DttmColumn] = value;
}
}


Checking the properties of this field, I noticed that the "NullValue"
property has a value of "(throw exception)'


Robert E. Flaherty
10/25/2007 2:35:01 PM
The issue is that I'm getting bounced in a section of the code automatically
generated when I add an XSD file to the project. If I start going in and
changing generated code than I am defeating the advance of the code
generation.

I was hoping that there was a way of influencing the code generation. Is
there?

[quoted text, click to view]
Rachel Appel
10/25/2007 4:33:35 PM
In article <F82909CD-DEBB-457A-AC69-DED1C4D72BE5@microsoft.com>,
RobertEFlaherty@discussions.microsoft.com says...
[quoted text, click to view]

Robert,
Try checking for System.DbNull before accessing the variable and that
Jim Rand
10/25/2007 5:11:11 PM
This is by design. The strongly typed dataset will have a method (not
property) IsSent_DttmNull() if the underlying column can be null.

if (!IsSent_DttmNull) {access the value}

[quoted text, click to view]

Robert E. Flaherty
10/26/2007 1:25:01 PM
As I pointed out earlier, the error is occurring in code generated when I
copied an XSD file to my C# 2.0 project. The line of code that I manually
generated is "ds.Load(rdr, LoadOption.OverwriteChanges, new String[] {
"OwizCommFaxDoc" });" where ds has been defined as an instance of the
strongly typed dataset.

The line from the XSD that defines the offending column is "<xs:element
name="Sent_Dttm" minOccurs="0" type="xs:dateTime"
nillable="true"></xs:element>
" minOccurs="1" type="xs:string"></xs:element>






[quoted text, click to view]
Cor Ligthert[MVP]
10/26/2007 2:02:33 PM
Robert,

If a column allows nulls, then there is in your strongly typed dataset
created a method named as IsTheFieldNameNull()

If the DataBase does not allows Nulls, then it is of course a normal error.

Cor
AddThis Social Bookmark Button