- PR -

DBNull時の処理

1
投稿者投稿内容
mak
会議室デビュー日: 2004/01/09
投稿数: 14
投稿日時: 2004-02-03 10:55
いつも大変参考にさせていただいています。

開発言語:VB.NET(2003)
データベース:Oracle9i

DataAdapterでDataSetにデータを取得後DataRowに1レコードを入れて、
指定した列の値がNULLかつ、取得先のテーブルの列の型に合わせて処理を
分岐させたいのですがうまくいきません。

例えばこんな感じです↓
If myRow.Item(Index) Is DBNull.Value Then
  Select Case myRow.Item(Index).GetType.Name.ToLower
    Case "string"
      Console.WriteLine("String")
    Case "decimal"
      Console.WriteLine("Decimal")
    Case "date"
      Console.WriteLine("Date")
  End Select
End If

myRowはDataRowオブジェクトです。
これだと(当然ですが)型がDBNullになってしまい、Select Caseで分岐できません。
何かいい方法はないでしょうか?
よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-03 11:00
 “行[カラム数]”は、「値」そのものですから、DbNullですよね。でも、ここで欲しいのはその「列」の定義ではないですか?
 列の定義は、Adapter.Fill直後にAdapter.FillScheme(スペルミスってたらごめん)を実行して取得します。取得後、columnsプロパティからアクセスします。
mak
会議室デビュー日: 2004/01/09
投稿数: 14
投稿日時: 2004-02-03 11:55
返信ありがとうございます。

一つ質問なのですが、columnsプロパティは何のプロパティですか?
DataRowですか?
無月 重造
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 67
投稿日時: 2004-02-03 12:28
引用:

makさんの書き込み (2004-02-03 11:55) より:

一つ質問なのですが、columnsプロパティは何のプロパティですか?
DataRowですか?




確かDataTableかと

DataSetからだと
DataSet.Tables["テーブル名"].Columns
かな?

[ メッセージ編集済み 編集者: 無月 重造 編集日時 2004-02-03 12:31 ]
mak
会議室デビュー日: 2004/01/09
投稿数: 14
投稿日時: 2004-02-03 13:35
Jittaさん、無月 重造さん、ありがとうございました。

DataSet.Tables["テーブル名"].Columns["カラム数"].DataType.Name
でうまくいきました。

また何かありましたらよろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)