vb.netでデータベース(Access)を複数アクセス(編集)する方法について
いつも大変お世話になっています。
vb.netでデータベース(Access)を複数アクセス(編集)する方法についてご教授願います。
'SQL文
Dim wrk_sql As String
'データベース
Dim G_DATABASES As New System.Data.OleDb.OleDbConnection
'DBの型を定義
Dim dr As System.Data.OleDb.OleDbDataReader
'SQLの型を定義
Dim cmnd As New System.Data.OleDb.OleDbCommand
'データベースを開く
G_DATABASES = DBOpen(D:\test\db1.mdb")
'データ抽出 ※1
wrk_sql = "SELECT * FROM TEST"
wrk_sql &= " WHERE N_DATA = 0"
cmnd.Connection = G_DATABASES
cmnd.CommandText = wrk_sql
'コマンドの実行
dr = cmnd.ExecuteReader()
While dr.Read() = True
' ………← ※2
End While
<目的>
[※1]で抽出した結果(複数行存在します)を保持したまま
[※2]の中で同じDB(G_DATABASES)にアクセスし
SELECT文で抽出した結果を保持したまま処理を続けたい。
<問題>
・実行時「指定したデータベースは既に開いている」とのエラーが表示。
・DBの型の定義、SQLの型の定義 を複数用意してもエラーが表示。
No.2ベストアンサー
- 回答日時:
DataAdapterを使われたほうがよろしいかと。
'/**コネクションしてテーブル取得**/
Dim Con As OleDbConnection, Cmd As OleDbCommand
Dim Provider As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" '接続プロバイダ
Dim st As String
st = Provider
st &= Chr(34) & mdbPATH & Chr(34) & ";"
Con.ConnectionString = st
Cmd.Connection = Con
Dim ds As New DataSet
Dim dt As DataTable
Dim dbAdapter As OleDbDataAdapter
wrk_sql = "SELECT * FROM TEST"
wrk_sql &= " WHERE N_DATA = 0"
Cmd.CommandText = wrk_sql
dbAdapter.SelectCommand = Cmd
dbAdapter.Fill(ds, TableName)
dt = ds.Tables(TableName)
'/******************************************************//
あとは、アダプターを使って追加・更新・削除を行なえばOK!!
No.3
- 回答日時:
下記の部分について、名前を変えて、もう1セットデータベースを開くというのはどうでしょうか?
'データベース
Dim G_DATABASES As New System.Data.OleDb.OleDbConnection
'DBの型を定義
Dim dr As System.Data.OleDb.OleDbDataReader
'SQLの型を定義
Dim cmnd As New System.Data.OleDb.OleDbCommand
'データベースを開く
G_DATABASES = DBOpen(D:\test\db1.mdb")
No.1
- 回答日時:
DataReader を使っているからでしょう?
該当データを DataTable で全て取得して、接続を閉じれば良いのでは?
お早いご返答、誠にありがとうございます。
Dim rsDATFIL As DataTable '※追加
'コマンドの実行
dr = cmnd.ExecuteReader()
rsDATFIL = dr.GetSchemaTable '※追加
rsDATFIL.CreateDataReader.Read
を行い、テーブル内を覗たのですが
ヘッダ情報しか取得できませんでした...
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数SQL発行について
-
【VB】コンボボックスにデータ...
-
初心者ですデータベースの形式 ...
-
VB6.0とaccessのDBを接続する
-
PHP+ACCESSのデータベース接続...
-
ListviewにDB内容を表示し方に...
-
UPDATE時にSETしたい日本語文字...
-
vb.netでデータベース(Access)...
-
名前'dbOpenDynaset'は宣言され...
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
VB6.0の「vbFromUnicode」はVB....
-
配列の中の最大値とそのインデ...
-
エクセルでXY座標に並べられた...
-
『列名 '担当者CD' があいま...
-
INT64対応のprintf系関数はあり...
-
Redim とEraseの違いは?
-
VB.NETの配列にExcelから読み込...
-
accessでフィールド追加のあと...
-
SQLを発行とは?クエリの作成と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】コンボボックスにデータ...
-
UPDATE時にSETしたい日本語文字...
-
データベースの接続ができない
-
複数SQL発行について
-
ExcelVBAでのAccessデータベー...
-
VB6.0でSQLServerへ・・・Recor...
-
初心者ですデータベースの形式 ...
-
VB6.0とaccessのDBを接続する
-
StrutsでDataSourceの切り替え
-
名前'dbOpenDynaset'は宣言され...
-
VBSでADOを使ってaccessのテー...
-
vb.netでデータベース(Access)...
-
ASP.NET(VB.NET)でADO.NETを使...
-
関数のパラメーターと戻り値に...
-
OracleDataReaderについて…
-
VB2005でmdbに接続するには?
-
VB6.0でアクセス2000...
-
MDBをADO接続でINSERT・UPDATE...
-
PHP+ACCESSのデータベース接続...
-
VB 2010 Expressでのデータベー...
おすすめ情報