- PR -

Datasetの取得がうまくいかない

1
投稿者投稿内容
未記入
会議室デビュー日: 2004/06/02
投稿数: 2
投稿日時: 2005-10-13 14:35
VB.NETのWindowsフォームのボタンクリック時に、
Accessテーブルを見に行く処理を開発しています。

'testテーブルに1行追加
Dim cmd As New OleDbCommand("insert into test (key1) values ('1')", cn)
cmd.ExecuteNonQuery()
'detaset作成
Dim da As New OleDbDataAdapter("select * from test", strConn)
Dim ds As New DataSet
Dim row As DataRow
da.Fill(ds, "test")
'行数を表示
MsgBox(ds.Tables(0).Rows.Count)

最後のMsgBoxで1件以上の値が表示されるのを期待して
いるのですが、何故か「0」で表示されてしまいます。
正確な件数を表示させる方法をご存知の方がいらっしゃい
ましたら教えていただけないでしょうか。

ちなみに、以下のように一旦データリーダーで読み込む処理
を挿入すると、最後のMsgBoxでは何故かきちんと件数が表示
されます。

'testテーブルに1行追加
Dim cmd As New OleDbCommand("insert into test (key1) values ('1')", cn)
cmd.ExecuteNonQuery()
'データーリーダーで読み込む
Dim dr As OleDbDataReader
cmd.CommandText = "select * from test"
dr = cmd.ExecuteReader
dr.Close()
'detaset作成
Dim da As New OleDbDataAdapter("select * from test", strConn)
Dim ds As New DataSet
Dim row As DataRow
da.Fill(ds, "test")
'行数を表示
MsgBox(ds.Tables(0).Rows.Count)
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-10-13 14:45
はずしているかもしれませんが
Readerを使用した場合、うまくいくとろをみると
dr.Close()
ってのがミソのような気がします。
Insertした後にcn.Close()するとどうなりますか?
未記入
会議室デビュー日: 2004/06/02
投稿数: 2
投稿日時: 2005-10-13 14:49
おっしゃるとおり、cn.Close()したら上手く動作しました。
burton999さんどうもありがとうございました!
大変助かりました。
1

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