No.1ベストアンサー
- 回答日時:
参照設定でMicrosoft DAO3.5 ObjectLibraryを設定して
Private Sub cmd1_Click()
Dim db As DAO.Database
Dim qd As DAO.QueryDef
Dim rs As DAO.Recordset
Set db = DBEngine.OpenDatabase("フルパス\ファイル名.mdb") 'DBに接続する。
Set qd = db.QueryDefs("クエリ名") 'クエリーを呼び出す
qd.Parameters("パラメタ名").Value = 値 'パラメータ名を指定して値を設定
Set rs = qd.OpenRecordset 'クエリの結果のレコードセットを得る
End Sub
これで良いと思いますが。
この回答への補足
Set qd = db.QueryDefs("クエリ名")
の箇所がVB上で認識されてないみたいなんですが?
ちなみに言い忘れましたがDAOを使っています。
それとまた質問で申し訳ないんですが、引数のあるクエリの書き方ってどういう風に書くんでしょうか?パラメータの引き渡しの方法が見たことないのでよくわかりません。
以下は私の今現在、使えそうだなと思ったコードを順序立ててみました(これはDBへの書き込みを想定しています)しかしこれにはクエリ名を指定するコードが抜けているので悩んでいます。
Dim db As dao.Database
Dim qd As dao.QueryDef
Set db = OpenDatabase(cststrDBPath)
Set db = DBEngine.Workspaces(0).Databases(0)
Set qd = qd.Execute(dbDenyWrite)
↑あるいは↓(この文は自分でもよくわかっていません)
Set qd = qd.OpenRecordset(dbOpenDynaset, dbSeeChanges)
db.Close: Set db = Nothing
No.2
- 回答日時:
DAOでSet qd = db.QueryDefs("クエリ名")でクエリを呼び出せるはずなのですが・・。
qd = db.QueryDefsでクエリを呼び出しパラメタが必要で聞いてきた時にqd.Parametersで値を設定してあげれば良いはずなのですが。
DatabaseオブジェクトのOpenRecordsetメソッドをSQL文を引数として実行すればその結果がレコードセットとして取得できます。
参照設定でADOのままDAOを開こうとしてませんか?
ADOの設定Microsoft ActiveX Data Object ?.?Libraryをはずして試してみては?
Set qd = db.QueryDefs("クエリ名")でクエリ名の指定はできました。ありがとうございます。
さっきの質問の続きですが、Access側で登録されている追加クエリの記述で、引数がパラメータとして渡されるコードが必要なのかと思っていましたが(SQLServerのストアドみたいに)、クエリ側がVBからパラメータを受け取るのに、別に特に何もコードを記述しなくていいことがわかりました。VB側からは必要みたいでしたが。
Accessのクエリはこんな記述でいいんですね。
クエリ内SQL:
INSERT INTO DATA_TABLE ( CODE, MONEY, [KEY] )
VALUES (P1, P2, P3);
ついでにVB側コード上での呼び出し(一部省略):
Set qd = db.QueryDefs("INSERT_QUERY")
qd.Parameters("P1") = Text1.text
qd.Parameters("P2") = Text2.text
qd.Parameters("P3") = Text3.text
qd.Execute (dbDenyWrite)
とりあえずアクセスに登録されているクエリをVBのコード上から実行することに成功しました。ありがとうございます。
ところで全く別の質問なんですが、
Set db = DBEngine.Workspaces(0).Databases(0)
これってあってもなくてもコンパイルが通ったのですが必要なものなんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのスプレッドシートエクスポートで、シートが追加されてしまう 2 2022/07/16 21:45
- その他(データベース) DAOファイルのSQLクエリの部分を引数にして呼び出すときに引数でSELECT文持たせたら 1 2023/01/10 17:36
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Access(アクセス) Accessのリンクテーブルのパスを相対パスにする方法について教えて頂きたいです 1 2023/02/08 13:29
- Access(アクセス) お世話になります ACCESSを使用しています 下記のクエリデータ(1)があります 商品名 行数 A 1 2022/09/05 08:52
- Access(アクセス) Accessのクエリで、replace関数を使い、データの中にある”をブランクに置き換えたいのですが 6 2022/06/15 14:54
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
C#でaccdbファイルのテーブルの一覧を取得したいです。
C言語・C++・C#
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
VBとACCESSを接続したい
Visual Basic(VBA)
-
-
4
ExcelVBAからAccessMDB内のテーブル存在チェックをしたい
Visual Basic(VBA)
-
5
VBからACCESSのマクロを起動できますか?
Visual Basic(VBA)
-
6
VB.NETでフォーム上にExcelのような表を表示する方法
Visual Basic(VBA)
-
7
VB.NETでテーブルを作成
Visual Basic(VBA)
-
8
ACCESSで別DBにあるクエリを実行する
Visual Basic(VBA)
-
9
VB.netでmdbのレコードを取得
Visual Basic(VBA)
-
10
VB.NetでExcelファイルをAccessのテーブルにインポートする方法を教えてください。
Access(アクセス)
-
11
VB.NETでボタンのクリックイベントハンドラが2回実行される
Visual Basic(VBA)
-
12
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
13
ACCESSのテーブル名をリストにしたい
Visual Basic(VBA)
-
14
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
15
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
16
CloseとDisposeの違い
Visual Basic(VBA)
-
17
vb.netでデータベース(Access)を複数アクセス(編集)する方
Visual Basic(VBA)
-
18
ACCESSのデータに自動で半角スペースを入れたい
その他(データベース)
-
19
VBのReturnの使い方
Visual Basic(VBA)
-
20
VB.NETでのAccessテーブルリンク
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのマクロについて教え...
-
ExcelVBA修正のお願い
-
エクセルのマクロについて教え...
-
エクセルのVBAコードについて教...
-
エクセルのVBAコードについて教...
-
エクセルのマクロについて教え...
-
[vb.net] 起動したFrom2を閉じ...
-
エクセルのマクロについて教え...
-
[VB.net] ボタン(Flat)のEnable...
-
エクセルのマクロについて教え...
-
VBAコードについて教えてくださ...
-
VBA 別ブックからコピペしたい...
-
エクセルのマクロについて教え...
-
【ExcelVBA】インデックスが有...
-
Outlookの「受信日時」「件名」...
-
VBAでCOPYを繰り返すと、処理が...
-
コードを直していただきたいで...
-
Excel(M365) Vlookup/セル反転(...
-
Vba SelStart、SelLen教えてく...
-
Excel VBA 定義されたプロージ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBのソース上からAccessのmdbフ...
-
visual studio2017 datagridvie...
-
C言語において、プログラムの中...
-
スペース文字を、DBサーバー...
-
出力ファイルを別の場所へ。
-
Oracle 8i コンマ(,)を含むデ...
-
SQLのエラー(~付近に不適切な...
-
SQLサーバー接続 特定のPCがWin...
-
エクセルマクロで指定範囲内の...
-
Excel-VBAの「しばらくお待ちく...
-
GROUP BYでエラーが発生
-
MSDEまたはSQLServerでReadOnly...
-
ACCESSで作成したアプリケーシ...
-
SQL Loaderを使いたい
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
既定のインスタンスと名前付き...
-
新規saの作成方法について
-
セキュリティソフト カスペルス...
-
PostgreSqlでFunctionの作成に...
-
RDSデバイスCALを誤って消費し...
おすすめ情報