Null Dates in Dataset

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

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)'
 
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,
Try checking for System.DbNull before accessing the variable and that
should help you out.
 
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}

Rachel Appel said:
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,
Try checking for System.DbNull before accessing the variable and that
should help you out.
 
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?

Jim Rand said:
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}

Rachel Appel said:
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,
Try checking for System.DbNull before accessing the variable and that
should help you out.
 
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
 
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>
 
Back
Top