2017-07-25 76 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替換掉SQL是在傳遞查詢

  2. qdef.ReturnsRecords不替換傳遞的屬性表定義

有什麼辦法使查詢完全通用,還是我需要根據是否返回記錄創建單獨的查詢?

+0

它的工作更好,如果你'昏暗的國家開發銀行作爲DAO.Database','設置CDB = CurrentDb','qdef = cdb.QueryDefs(gPassThru)'設置? –

+0

這個保存的查詢是否在其他地方按名稱調用,或者只是立即執行?如果只是立即執行,而不是保存已更改的查詢,只需創建一個臨時QueryDef並在需要時設置所有必需的屬性即可。您可以爲「樣板代碼」創建一個函數。 –

+0

戈登湯普森,似乎沒有幫助。我遇到了同樣的問題。謝謝。 C帕金斯,一個臨時查詢(我完全可以控制)可能是我需要的。我會研究這一點。 – UhClem

回答

1

這似乎在伎倆 - 至少在我不需要任何記錄的情況下。感謝C珀金斯指導我朝這個方向發展。

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