2017-07-25 50 views
0

MS Accessでパススルークエリを正常にセットアップしました。つまり、DAO.QueryDef ".SQL"プロパティを使用してSQLをオンザフライで設定できるということは一般的です。MS Access SQL Serverへの汎用パススルークエリ

問題は、 ".ReturnsRecords"プロパティをオンザフライで設定できないようです。クエリのプロパティシート内にあるものは、そこに詰まっているようです。

例が役に立つかもしれません:

Dim qdef As DAO.QueryDef 
Set qdef = CurrentDb.QueryDefs(gPassThru) 
qdef.ReturnsRecords = False ' or True 
qdef.SQL = "exec dbo.sp_whatever" 

繰り返しに、

  1. qdef.SQLはパススルークエリに

  2. qdef.ReturnsRecordsだっないどんなSQL置き換えますパススルーのプロパティシートの定義を置き換えます。

クエリを完全に汎用的にする方法はありますか、またはレコードが返されるかどうかに基づいて個別のクエリを作成する必要はありますか?

+0

それはあなたがDAO.Database'として '薄暗いCDBをすれば、'設定しCDB = CurrentDb'は、 '' = cdb.QueryDefs(gPassThru)qdef設定する任意のより良い仕事していますか? –

+0

名前で呼び出されたこの保存されたクエリは、他の場所で呼び出されたか、またはすぐに実行されるだけですか?ただちに実行する場合は、保存したクエリを変更する代わりに、一時的なQueryDefを作成し、必要なときに必要なすべてのプロパティを設定します。あなたは "定型句のコード"のための関数を作成することができます。 –

+0

Gord Thompson、それは助けに見えません。私は同じ問題にぶつかります。ありがとう。 Cパーキンズ、私は完全なコントロールを持っている一時的なクエリが私が必要なものかもしれません。私はそれを調べます。 – UhClem

答えて

1

これは、少なくとも私がレコードを必要としない場合は、トリックを行うようです。この方向で私を助けてくれたC Perkinsのおかげです。

Dim strSQL As String 
Dim qdef As DAO.QueryDef 

Set qdef = CurrentDb.CreateQueryDef("") 'temporary pass-through 
strSQL = "exec dbo.sp_whatever" 

With qdef 
    .Connect = gConnect 
    .SQL = strSQL 
    .ReturnsRecords = False 
    .Execute 
End With 

Set qdef = Nothing 
関連する問題