|
■No79623 (ED さん) に返信
> 「テーブル'テーブル名'にある列'列名'はDBNuulです。」
> というメッセージがでます。
Visual Studio のデータソース構成ウィザードでデータベースのテーブルから型付
DataSet + TableAdapter を作って使ってますよね?
で、元になるデータベースのテーブル「テーブル名」のフィールド「列名」は NULL
許可になってますよね?
そうすると型付 DataSet のコードに以下のようなクラス、プロパティが設定される
はずです。(以下は C# の場合ですが VB.NET も同様)
public partial class テーブル名Row : global::System.Data.DataRow {
private テーブル名DataTable tableテーブル名;
//・・・中略・・・
public string 列名 {
get {
try {
return ((string)(this[this.tableテーブル名.列名Column]));
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("
テーブル \'テーブル名\' にある列 \'列名\' の値は DBNull です。", e);
}
}
set {
this[this.tableテーブル名.列名Column] = value;
}
}
//・・・中略・・・
}
「列名」プロパティの get アクセサを使って「テーブル名DataTable」からデータを取得
する際、そのデータが DBNull なのでキャストに失敗し、StrongTypingException がス
ローということだと思います。
質問者さんのコードではどのようにしている分かりませんが、自分ではそのようなコード
を書いてなくても、例えば、
テーブル名Row[] rows = (テーブル名Row[])dataTable.Select("ID='" + textBox1.Text + "'");
テーブル名BindingSource.DataSource = rows;
のようにすると、「列名」プロパティの get アクセサを使って「テーブル名DataTable」か
らデータを取得しようとします。
どこでそのようなことになっているのかデバッガを使って調べてください。
|