我剛剛開始將我們的Access資料庫轉移到SQL Server,但遇到了麻煩。
我有一個存盤程序,它成功地將行回傳到 ado 記錄集。
當我嘗試將包含存盤程序結果的rs系結到Access表單時,Access崩潰了,而且沒有顯示任何錯誤資訊。我使用的是 O365 32b 和 SQL Server 2019.
。下面是代碼:
Dim sSQL As String, rs As ADODB.Recordset
1 sSQL = "Exec usp_TaskStatusWidget" & Me.Tag & " ,0"
2 ADOConn.ConnectionString = conADO
4 ADOConn.Open
6 Set rs = New ADODB.Recordset
7 rs.CursorLocation = adUseClient
8 rs.Open sSQL, ADOConn
10 Set Me.Recordset = rs ' Access crashes here
. . .
如果有任何幫助,我們將非常感激!
tia.
SR
uj5u.com熱心網友回復:
好的,你之前是在使用ADO,還是在介紹這個呢?
在大多數情況下,你最好只使用一個視圖。(用鏈接視圖替換訪問查詢),然后繼續使用客戶端where子句或過濾器(訪問將只拉下您請求的行)。因此,鏈接視圖通常是一個更好的選擇,而且作業量要小得多(事實上,即使是現有的開放式報告等的過濾器也會起作用,并且只提取與were子句相匹配的標準記錄。
而且在大多數情況下,我不會引入ADO.
。因此,對于一個PT查詢,我經常這樣做:
dim rs as DAO.RecordSet
with CurrentDb.queryDefs("qryPt"/span>)
.SQL = "Exec usp_TaskStatusWidget" & Me.Tag & " ,0"
set rs = .OpenRecordSet
end with
所以,上面假設你有一個名為qryPt的pt查詢。 這也意味著你永遠不會在代碼中處理或擔心連接字串。pt查詢有連接。(你的重新鏈接代碼現在可以重新鏈接表和pt查詢)
。我只是建議在你引入ADO來呼叫存盤程序,而應用程式的其他部分是以前的DAO的情況下,將上述建議作為一個參考。如果應用程式是以前的DAO,那么就不要管它,并對你的PT查詢使用上述方法--甚至需要呼叫存盤程序的代碼。
uj5u.com熱心網友回復:
Access傾向于嘗試決議查詢文本,以使過濾器/分類等作業,如果它不是一個普通的語法錯誤,但也不是Access SQL,那么奇怪的事情就會發生,主要是崩潰了。
嘗試在前面添加一個注釋,以確保 Access 知道不進行決議:
sSQL = "-- Access no parse pls" & vbCrLf & "Exec usp_TaskStatusWidget" & Me. Tag & ",0"。
當然,注釋的內容并不重要,它的目的是在Access試圖將其決議為Access SQL(沒有注釋)時立即引起語法錯誤
。轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/329401.html
標籤:
