在連接到 SQL Server 的 MS Access FrontEnd 中,我將傳遞查詢和通過檔案 DSN(用于“簡單系結表單”)的“正常”ODBC 連接組合用于表單。在 VBA 函式和 Subs 中,我使用一些 ADO 連接來直接更改表中的資料。
我需要對某些表單進行直通查詢,因為我需要DISTINCT在帶有MEMO / NVARCHAR(max)欄位的表格上使用關鍵字。
目前我正在使用傳遞查詢將資料輸入到我的表單中,如下所示:
strSQL = "SELECT DISTINCT tbl_Changes.Change_Nr, Title, Comment FROM [tbl_Changes] inner JOIN tbl_Parts ON tbl_Changes.Change_Nr = tbl_Parts.Change_Nr " & _
"WHERE '" & strProject & "' IN (" & strAllProjects & ") " & _
"ORDER BY tbl_Changes.Change_Nr DESC"
Dim qdf As DAO.QueryDef, rst As DAO.Recordset
Set qdf = CurrentDb.CreateQueryDef("")
qdf.Connect = Application.TempVars("tempvar_StrCnxn")
qdf.sql = strSQL
qdf.ReturnsRecords = True
'Debug.Print strSQL
Set rst = qdf.OpenRecordset
Set Forms![frm_ChangePartsOverview].Recordset = rst
Forms![frm_ChangePartsOverview].Requery
'No rst.Close to have the data still in the Form!
Set qdf = Nothing
但我認為這不是正確的做法,或者是嗎?
uj5u.com熱心網友回復:
關于您在評論中的擔憂:
rst.Close在 VBA 中是多余的,垃圾收集器負責關閉記錄集,只有在極少數情況下您才需要手動關閉它們。
理論上,您可以有一個Form_Close或Form_Unload處理程式來關閉記錄集,但沒有必要。
DAO 還快取資料庫連接并在需要時重用它們(一些用戶使用它來將密碼保留在連接字串之外,因為如果使用密碼建立連接,它會被快取并且可以在鏈接表中使用而無需再次指定它,但這也會導致錯誤,例如使用SET IDENTITY_INSERT ON哪個DoCmd.TransferDatabase)。
也就是說,有其他方法,但它們都有優點和缺點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/488984.html
上一篇:查找字串中第一個數字的位置并拆分
