2016-10-26 1 views
2

VB.Netを初めて使用していて、VBを使用して "クラッシュする" SQL Serverデータベースにはいくつかの日付列があり、いくつかはNULLです。私はGRIDCONTROLを構築し、それぞれの「行」のデータを処理するためにカスタムクラスを持つようにしようとしているVB.Net - SQLDataReaderでエラーが発生しました。型 'DBNULL'から 'Date'を入力すると有効ではありません。

を私が設定SqlDataReaderのを持っています。

Using sdr As SqlDataReader = cmd.ExecuteReader() 

エラーがでトリップさ:読者は、オブジェクトを作成するために電話をかけるに変換しようとして失敗しているので、

' this is an abbreviated statement of the original - many more values being passed 
appsList.Add(New PromiseAppClass(sdr("PrimID"), sdr("lastname"), 
    sdr("firstname"), sdr("middleinitial"), sdr("othernames"), 
    sdr("ssn"), sdr("date1"), sdr("date2"))) 

日付1と日付2は、DBにNULLです(私は仮定している - VBがあまりにもではありません明示的に - 私に - どこに問題があるのか​​を詳細に述べる)。これらの2つの項目の両方は、PromiseAppClassの日付として、通常のゲッター/セッターで設定されます。

解決方法クラス内の特定の変数をテストして設定できるようにする方法はありますか?または、上記の文のNULL日付を許容できるものに変換する方法はありますか?私は文字列を使いたくないので、同じ種類の問題に遭遇することはありませんが、NULLを文字列に変換することはできません。

+0

チェックにより、SDRに( "日付1")を交換してみてください:!?」 " –

+0

これが既存の質問の正確な複製であれば、それに言及してください。私はここで(そして他の場所で)3時間捜し求めてきましたが、「正確な」重複は見られませんでした。一般的な質問は似ているかもしれません - 私が実行した状況は必ずしも同じではありません - 私に。 4日前まで、私はVB、あるいはVS(少なくとも20年以上)で働いていなかったので、ここで何か不足している場合 - 私は謝罪します。私は私ができるだけ早く解読しようとしている何かのための極端な時間スケジュールを持っています。 – TDU

+0

'sdr.IsDBNull(index)'は、そのインデックスのカラムがDbNullであるかどうかを教えてくれます。そうであれば、代わりに何を渡すかを決める必要があります。 DBNullをエラーメッセージのポイントである日付に変換することはできません。 – Plutonix

答えて

1

このSDR( "日付1")= nullのSDR( "日付1")のようにnullを

If(sdr("date1") is nothing,nothing,sdr("date1")) 

それとも

If(IsDbNull(sdr("date1")),nothing,sdr("date1")) 
+0

あなたがしたことについて考えてください:)。基本的に、日付が 'sdr(" date1 ")'を渡すのと同じものは何も渡していないと言っただけです。 – Bugs

+0

私のコードを編集しました:) – Hadi

+0

Dim test As Date test = If(IsDBNull(sdr( "date1"))、 ""、sdr( "date1")) ただ問題を移動するので、 "日付に...問題を解決しません... このフォーラムに慣れようとしています... – TDU

関連する問題