- - PR -
データベースを参照した時のNULLの回避方法について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-07-11 22:45
現在、タイムレコーダーよりcsvにてデータを取得しそのデータをシステム取り込むプログラムを作成中その中で、データグリッドビュー中で有給時間等を補正。
その際に、データベース上にNULLがあると書きプログラムでエラーが発生します。 「型’DBNull’から型’String’への変換名は無効です。 For 〜 Next文でNULLを回避する方法を伝授していただけると助かります。 (まだ4月よりVBを勉強し始めた初心者です。今月中にプログラムを完成させるのがノルマになっており困っています。) 環境:VS2005、SQL2005を利用 Dim dtb1 As DataTable = BRSYSDataSet.Tables("M_WORKINGRESULT") '有給時間を分換算してPAYHOLIDAY_Mに表示 Dim ph As String For i As Integer = 0 To dtb1.Rows.Count - 1 ph = dtb1.Rows(i)("PAYHOLIDAY_T") Dim left As Integer Dim right As Integer left = Mid(dtb1.Rows(i)("PAYHOLIDAY_T"), 1, 2) 'PAYHOLIDAY_M列の時間(例:08:45)の08を取得 right = Mid(dtb1.Rows(i)("PAYHOLIDAY_T"), 4, 2) 'PAYHOLIDAY_M列の時間(例:08:45)の45を取得 dtb1.Rows(i)("PAYHOLIDAY_M") = left * 60 + right '分換算 Nex | ||||||||
|
投稿日時: 2007-07-11 23:06
dtb1.Rows(i)("PAYHOLIDAY_T")がDBNullかどうかチェックする。
| ||||||||
|
投稿日時: 2007-07-11 23:53
せっかく DataSet や DataRow を使用していながら勿体ないです。 私なら手書きで回避せず型付 DataSet を用意して、とあるプロパティの設定を変えて終了ですね。 ノンコーディングです。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-07-12 07:44
NAL-6295です。
型付きじゃない場合は、DataRow.IsNull('項目名')で判定。 型付けの場合は、じゃんぬさんの言うとおり、とあるプロパティを設定して、そもそもDBNullを取得しないようにするか、DataRow.Is項目名Nullで判定。 ですね。 | ||||||||
|
投稿日時: 2007-07-12 10:39
3人の方、ご回答ありがとうございました。
If dtb1.Rows(i)("PAYHOLIDAY_T") Is DBNull.Value Then dtb1.Rows(i)("PAYHOLIDAY_T") = "00:00" End If 上記を追加することで、NULL回避できませんでした。 型付 DataSetの事は、よく分かりません。 また、ご教授頂ければ、幸いと存じます。 | ||||||||
|
投稿日時: 2007-07-12 11:00
やるなら、
ではなく、
じゃないですか? 時間を文字列として扱うのはどうかと思ったりもしますが。 | ||||||||
|
投稿日時: 2007-07-18 10:56
すいません、削除しました。[ メッセージ編集済み 編集者: 隣の古柴 編集日時 2007-07-18 11:25 ] | ||||||||
|
投稿日時: 2007-07-18 11:30
お世話になっております。
やりとりの中で出てくる「型付DataSetのとあるプロパティ」というのは http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemdatadatasetmemberstopic.asp この中に含まれているものでしょうか? 後学のためにご教示頂ければ幸いです。 |