■61648 / inTopicNo.3) |
Re[1]: Date型のNullを取得する方法 |
□投稿者/ 魔界の仮面弁士 (2328回)-(2011/08/25(Thu) 10:54:41)
|
■No61645 (SQL-Server初心者 さん) に返信 > エラーが帰ってきます 「帰」→「返」な気もしますが、それはさておき。
> 日付がDate型で ここでいう Date 型は、VB.NET の Date 型のことでしょうか? それとも、SQL Server の DATE型やDATETIME型のことでしょうか?
> NullをASP.NET(VB.NET)側で取得しようとしますが、 DataAdapter 等を使う場合は、戻り値が Object になりますが、この場合DB 側の NULL 値は、 .NET 側には DBNull 型のオブジェクトとして渡される事になります。
DBNull 値の判定が必要なら、「If IsDBNull(…) Then」のように記述できます。
また、型付DataSet で受け取っている場合には、.列名 プロパティとは別に、 .Is列名Null メソッドが用意されますので、これによって NULL 判定が可能です。
> 「Null 許容のオブジェクトには値を指定しなければなりません。」と言うエラーが帰ってきます 現状のコードを提示していただいていないので、憶測にはなりますが、 上記は、Null許容型の取り扱いを間違えている時のエラーに見えます。
たとえば、 Dim dt As Nullable(Of Date) または Dim dt As Date? という型の値があったとします。
この場合、たとえば「If dt.Value < Now Then」という比較を行ったり、 あるいは「Dim x As Date = CDate(dt)」といった操作を行おうとすると、 dt が Nothing だった場合に 『Null 許容のオブジェクトには値を指定しなければなりません。』 というエラーを生じさせることになります。
この場合は、Null かどうかも判定する必要があるため、 「If dt.HasValue AndAlso dt.Value < Now Then」 「If dt IsNot Nothing AndAlso dt.Value < Now Then」 「Dim x As Date = If(dt, Nothing)」 などといった対処が必要です。
> Object型をセットすると 変換するのではなく、セットするということは、 x = New Object() のようなことですか?
> 「指定されたキャストは有効ではありません。」と言うエラーが帰ってきます Object 型へのキャストが失敗する事は稀だと思いますが、どういうコードを用いて、 何型のオブジェクトを何型にキャストしようとしたのでしょうか?
> 御教授して頂けないでしょうか? http://www.tt.rim.or.jp/~rudyard/torii009.html
|
|