2012-03-29 39 views
20

VBAでMS Access 2007で保存されたクエリを実行するにはどうすればよいですか?MS Access - VBAで保存されたクエリを名前で実行する

SQLをコピーしてVBAに貼り付けたくありません。むしろ単にクエリの名前を実行するだけです。

これは機能しません... VBAはクエリを見つけることができません。

CurrentDb.Execute queryname 

答えて

32

あなたはそれを次のように行うことができます。VBAはQUERYNAMEを見つけることができませんなぜあなたが調査する必要

DoCmd.OpenQuery "yourQueryName", acViewNormal, acEdit 

OR

CurrentDb.OpenRecordset("yourQueryName") 
+1

私は編集したくありません。これは私の更新と挿入クエリを実行しますか? – tdjfdjdj

+0

はい、UpdateとInsertのクエリを実行します。 – Taryn

+0

私のVBAコードではなく、手動で動作する追加クエリです。保存されたクエリを追加することはできませんか? – tdjfdjdj

7

を。

私はqryAddLoginfoRowという名前の保存されたクエリを持っています。現時点の行をloginfoテーブルに挿入します。 CurrentDb.Executeによって呼び出されると、そのクエリは正常に実行されます。

CurrentDb.Execute "qryAddLoginfoRow" 

私の推測では、QUERYNAMEのいずれかが現在のデータベースのクエリ定義コレクションに存在しないクエリの名前を保持する変数である、またはQUERYNAMEは、既存のクエリのリテラル名であるということですが、あなた引用符で囲まなかった。

編集: あなたはQUERYNAMEが現在のDBのクエリ定義コレクションに存在しないことを承諾する方法を見つける必要があります。 CurrentDb.Execute行の直前に、この2行をVBAコードに追加します。

Debug.Print "queryname = '" & queryname & "'" 
Debug.Print CurrentDb.QueryDefs(queryname).Name 

実行時エラー3265をトリガーするこれらの2行の第二、「項目がこのコレクションに見つかりませんでした。は」次にあなたがCurrentDbを求めているクエリの名前を確認するために、イミディエイトウィンドウに行きますExecute

+0

私のVBAコードではなく、手動で動作する追加クエリです。保存されたクエリを追加することはできませんか? – tdjfdjdj

+0

私が記述したクエリ**は**追加クエリです...私のloginfoテーブルに行を追加(追加)します。 – HansUp

2

CurrentDb.Executeを使用するには、クエリがアクションクエリで、かつ引用符で囲まれている必要があります。

CurrentDb.Execute "queryname" 
関連する問題