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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VB.netでmdbのレコードを取得
Visual Basic(VBA)
-
VBからACCESSのマクロを起動できますか?
Visual Basic(VBA)
-
ACCESSのテーブル名をリストにしたい
Visual Basic(VBA)
-
-
4
VB.NETでフォーム上にExcelのような表を表示する方法
Visual Basic(VBA)
-
5
ASP.NET OleDbConnectionが定義がされていません
Microsoft ASP
-
6
VB.NETでテーブルを作成
Visual Basic(VBA)
-
7
ACCESSで別DBにあるクエリを実行する
Visual Basic(VBA)
-
8
VB.NetでExcelファイルをAccessのテーブルにインポートする方法を教えてください。
Access(アクセス)
-
9
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
10
10進数→2進数への変換
Visual Basic(VBA)
-
11
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
12
アクセスのフィルタ nullについて。
その他(データベース)
-
13
VBとACCESSを接続したい
Visual Basic(VBA)
-
14
AccessのSQL文で1件のみヒットしたら終了させる構文。
その他(データベース)
-
15
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
16
TextBoxでEnterキーを押すと、にあるButtonを押したのと同じ効果を出す方法
Visual Basic(VBA)
-
17
VB.NETでパラメータクエリを使用してAccessに値を設定
Visual Basic(VBA)
-
18
共通モジュールでDBへの接続と利用方法
Visual Basic(VBA)
-
19
MSアクセスのマクロ・モジュールを実行
その他(プログラミング・Web制作)
-
20
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームに別シートか...
-
現在のブックを閉じないで、マ...
-
【VBA】マクロの入ったファイル...
-
IEの通知バー制御ができなくなった
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
VBA初心者 Ctrl+での操作、ボタ...
-
VBA 複数条件の分岐処理の上手...
-
エクセルのマクロについて教え...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
FileCopy時のエラー
-
VBAで各列の"+"と"o"の合計数を...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
VBA listBoxについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBのソース上からAccessのmdbフ...
-
codeigniterで3つのテーブルか...
-
Oracle 8i コンマ(,)を含むデ...
-
GROUP BYでエラーが発生
-
SQLサーバー接続 特定のPCがWin...
-
SQLのエラー(~付近に不適切な...
-
Access2010 accdbのエラー「ODB...
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
ノートンの解約(「ライセンス...
-
PostgreSqlでFunctionの作成に...
-
エクセルマクロで指定範囲内の...
-
既定のインスタンスと名前付き...
-
sqlcmdでクエリの実行結果をバ...
-
Excel-VBAの「しばらくお待ちく...
-
ストアドの速度がクエリの30...
-
(SQLSERVER) 別サーバーへテー...
-
MSDEまたはSQLServerでReadOnly...
-
ユーザー定義関数内でのsp_exec...
-
SQL Loaderを使いたい
-
異なるサーバーにファイルをエ...
おすすめ情報