- PR -

行の追加

1
投稿者投稿内容
windou
会議室デビュー日: 2005/07/12
投稿数: 5
投稿日時: 2005-07-14 14:38
VB.net2003でデータフォームウィザードを使ってACCESSのデータを読み込みました。このとき読み込まれているACCESSのテーブルにテキストボックスからデータを追加するボタンを作りたいのですがどのようにすればいいのかわかりません。AddRowを使ってみたのですがうまくいかないのです。
プロバイダーには「Jet.OLEDB.4.0」というのを使っています。
OSはwinXP,.NET Frameworkは1.1です。
よろしくお願いします。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-07-14 15:38
ADO.NET対応したデータブロバイダを使っているのであれば、SQL Serverであろうと、Oracleであろうと、Accessであろうと、基本的にはあまり変わらない。ADO.NET基礎講座でも読んで概要を学習した後、あらためて何が分からないのか聞いてください。

で、以下のURLで質問の仕方もちょいと勉強してください。
http://www.hyuki.com/writing/techask.html

美味く行かないなら、どのような動作を期待しているのか?実際の動作はどんなだったのか?ぐらいかは書きましょうよ。
windou
会議室デビュー日: 2005/07/12
投稿数: 5
投稿日時: 2005-07-14 22:46
大変申し訳ございませんでした
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dtSet As DataSet1
Dim dtTable As DataSet1.T_書込用DataTable
Dim newRow As DataRow
dtSet.Tables.Add(dtTable)
newRow("ID") = TextBox1.Text
dtTable.Rows.Add(newRow)
End Sub
上記のようなコードを使ってTextBoxからデータグリッド上のテーブルへ書き込みたいのです。ビルドはできるのですがボタンを押すと「オブジェクト参照がオブジェクト インスタンスに設定されていません。」というエラーが出てしまいました。
117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2005-07-15 09:16
提示されたコードを見る限りでは
dtSetがnull(インスタンスが作られてない)のでは?

_________________
Future Is What We Are!

[ メッセージ編集済み 編集者: 117 編集日時 2005-07-15 09:18 ]
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2005-07-15 10:34
引用:

windouさんの書き込み (2005-07-14 22:46) より:
大変申し訳ございませんでした
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dtSet As DataSet1
Dim dtTable As DataSet1.T_書込用DataTable
Dim newRow As DataRow
dtSet.Tables.Add(dtTable)
newRow("ID") = TextBox1.Text
dtTable.Rows.Add(newRow)
End Sub
上記のようなコードを使ってTextBoxからデータグリッド上のテーブルへ書き込みたいのです。ビルドはできるのですがボタンを押すと「オブジェクト参照がオブジェクト インスタンスに設定されていません。」というエラーが出てしまいました。


VS.NETを使用しているのであれば、
デバッグして何処でエラーになるのかを事前に調べておいてください。
(質問の内容やソースの提示方法を見る限り、.NET初心者と見受けましたが)

で、原因は117さんにほぼ同意。
インスタンスが生成されてない場合はNothingになってるはず。
Nothingなオブジェクトを使おうとしたら・・・?
確認してみてください。
_________________
まゆりん @ わんくま同盟
Blog る。
餅宮餅吉
ベテラン
会議室デビュー日: 2005/03/04
投稿数: 57
お住まい・勤務地: 月餅のうまい店の隣
投稿日時: 2005-07-15 10:34
おはようございます。餅宮です。

#相変わらず回答にあらず。(役立たず

とりあえず、会議室の「■@IT会議室のご利用についてのお願い」に目を通しましょう。

ここから本題

1.質問する前に、「Microsoft Visual Studio .NET 2003 ドキュメント」、google等の検索サイトで自分が困っていることを検索してみましょう。

今回の場合なら、「オブジェクト参照がオブジェクト インスタンスに設定されていません。」を検索してみましょう。

インスタンスが null の状態でメソッド、プロパティを呼び出しの際に発生する、例外だということが分るかと思います。
(この時点で出現した単語:インスタンス、null,メソッド、プロパティ、例外の意味を分らない場合は再度検索してみましょう。)

次は、デバッグ実行させて見ましょう。ブレイクポイントを設定し、一行毎に実行させていきます。
例外が発生したら、その個所のコードを見てみましょう。

オブジェクトが生成されていないということなので、その個所で使用しているオブジェクトにインスタンスが無いので、そのオブジェクトのインスタンスを生成してあげればいいと言うことが分ると思います。


2.コードを乗せる場合は例外が発生する最小のコードにしましょう。
 エラーが出ない個所のコードをどんどん削除していくような感じでいいと思います。
 (削除しすぎて、別のエラーを出さないように注意
 少なくてもエラーが発生した以降のコードは要らないと思います。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-07-15 10:41
NAL-6295です。

コードを見る限り「インスタンスが生成されていない」というステップを乗り越えても
DataSetとDataTableとDataRowを関連させた使い方について嵌るのではないかと思います。
(というかDataRowはコンストラクタにアクセスできないから下記をクリアしないと乗り越えられないのかな。)
MSDNでDataSet,DataTable,DataRowについて調べてみてください。
DataTableに行を追加するにはどうすれば良いか。等わかると思います。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
1

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