2

Accessは、'myQuery' というクエリ ビルダーで設計されたクエリを保存しました。データベースは、ODBC 接続を介してシステムに接続されます。マクロはすべて有効です。

Excelは ADODB 接続を確立してデータベースに接続します。

Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
With con
 .Provider = "Microsoft.ACE.OLEDB.12.0"
 .Open "MyDatabase.accdb"
End With

通常、先に進んでSQLを書くだけです。これはまったく問題なく、次のようなことをするだけです

Dim sqlQuery As String
sqlQuery = "SELECT * FROM myTable"
Set rs = New ADODB.Recordset
rs.Open sqlQuery, con, ...

しかし、アクセスデータベースに保存したクエリにアクセスしたいです。では、接続したばかりのデータベースで保存されたクエリを呼び出すにはどうすればよいでしょうか。

すでに試した

  1. con.Execute("EXEC myQuery")しかし、それは myQuery が見つからないと言っていました。
  2. rs.「myQuery」を開きますが、それは無効であり、そこから SELECT/etc ステートメントが必要です
4

5 に答える 5

7

ストアドプロシージャのように扱えると思います。

直前に始めればDim sqlQuery As String

 Dim cmd as new ADODB.Command
 cmd.CommandType = adCmdStoredProc
 cmd.CommandText = "myQuery"
 cmd.ActiveConnection = con

 Set rs = cmd.Execute()

この後、レコードセットの作業をピックアップします。

于 2013-01-18T13:32:00.267 に答える
2

あなたはもうすぐそこにいました:

Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
With con
 .Provider = "Microsoft.ACE.OLEDB.12.0"
 .Open "z:\docs\MyDatabase.accdb"
End With
con.Execute "MyQuery"

Execを除外するだけです。

パラメータを追加することもできます。これは少し古いですが、役立つはずです: Access データベースの 2 つのフィールドを Excel データとおそらくマクロで更新します。

于 2013-01-18T13:26:11.583 に答える
0

次を使用して、Access に既に保存されている更新クエリを実行できました。

Connection.Execute "My_Update_Query_Already_Saved_In_Access", adExecuteNoRecords, adCmdStoredProc

Access データベースと実行ステートメントの両方で、クエリ名のスペースをアンダースコアに置き換えるまで、エラーが発生しました。

于 2016-05-13T20:27:40.757 に答える
0

これは一種のハック ジョブですが、クエリを実行できます。つまり、SQL 文字列を次のように置き換えます。

sqlQuery = "SELECT * FROM QueryName;"

これを実行する前に、Access データベースが保存されていることを確認する必要があります。Ctrl+S を押します (クエリが Access で実行されただけでは不十分です)。

于 2016-06-15T21:31:04.277 に答える