質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

12502閲覧

DataSetのDbNull値の扱いについて

akabei

総合スコア21

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

1クリップ

投稿2015/06/15 11:54

編集2015/06/15 15:16

DataSetのDbNull値を変数へ入れる際
Integer型なら「0」、String型なら「Nothing」に変換する簡単な方法はありませんか?

String型ならDataColumnのNullValueプロパティを「(なし)」にすることで対応できますが
数値型はNullValueプロパティを変更できないためこの方法で対応できません。

DbNullを変数へ入れる前に
Is列名Null()メソッドでチェックできることはわかったのですが
列の数が多くなると一つ一つの項目をチェックするのは大変なため
まとめて簡単に変換できる方法などありましたら
教えていただければと思います。

lang

1 ''Is列名Null()メソッドでチェック 2 If ds.DataTable1(0).IsDataColumn1Null = False Then 3 Dim a As Integer = ds.DataTable1(0).DataColumn1 4 End If

追記)
回答を参考に汎用メソッドを作ってみました。
こんな感じでしょうか?

lang

1 ''呼び出し 2 Dim a As Integer = GetValue(ds.DataTable1(0), "DataColumn1") 3 4 ''汎用メソッド 5 Public Function GetValue(ByVal row As DataRow, ByVal colnm As String) As Object 6 Dim dt As DataTable = row.Table 7 Dim col As DataColumn = dt.Columns(colnm) 8 If IsDBNull(row(col.ColumnName)) Then 9 If col.DataType Is GetType(String) Then 10 Return Nothing 11 Else 12 Return 0 13 End If 14 Else 15 Return row(col.ColumnName) 16 End If 17 End Function

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tak1wa

2015/06/15 16:05

対象とするDataSetは型付ですか?継承する案考えてみますか
akabei

2015/06/16 11:08

DataSetは型付きです。データベースのテーブルから作成しています。 ぜひ継承する案についても意見をお聞きしたいです。
guest

回答1

0

ベストアンサー

DataColumn.DataTypeで型は分かるので、変換して値取得する汎用メソッドを作るのがシンプルな方法だと思います。
後、DataTabelを継承、拡張して自動変換するようなDataColumnを作る事でも実現可能かと思いますが、簡単ではないです。

投稿2015/06/15 13:46

chiku_

総合スコア1464

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akabei

2015/06/15 15:18

回答ありがとうございます。 汎用メソッドを質問に追記してみました。 DataTableを継承して拡張する方法は難しそうですね・・・。
chiku_

2015/06/15 23:28

作成されたようなメソッドのイメージになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問