2013-12-20 36 views
5

我們有一個相當大的Access前端應用程序已在Access 2010上運行。它廣泛使用ADO記錄集來訪問我們的SQL服務器上的數據,並且經常使用UniqueTable表單屬性。訪問2013破解UniqueTable功能

我們希望明年年初將整個辦公室遷移到Office 2013,但在測試期間,我們發現Access 2013不會與我們使用UniqueTable的代碼一起使用。任何試圖設置UniqueTable導致錯誤消息:在尋找一個解決方案

dim conn AS New ADODB.Connection 
conn.ConnectionString = "DATA PROVIDER=SQLOLEDB;DATA SOURCE=server1;DATABASE=database1;Integrated Security=SSPI;" 
conn.CursorLocation = adUseServer 
conn.Provider = "MSDataShape" 
conn.Open 

Dim cmd As New ADODB.Command 
cmd.ActiveConnection = conn 
cmd.CommandType = adCmdText 
cmd.CommandText = "SELECT TOP 10 * FROM Members WHERE MemberID IS NOT NULL" 

cmd.Execute 

Dim rs As New ADODB.Recordset 
rs.CursorLocation = adUseClient 
rs.Open cmd, , adOpenKeyset, adLockOptimistic 

Set Recordset = rs 
UniqueTable = "Members" 

:當試圖設置UniqueTable

You entered an expression that has an invalid reference to the property UniqueTable

下面的代碼適用於上述錯誤的Access 2010,但遇到獲取2013我發現只有其他一些提到這個錯誤的情況,到目前爲止還沒有解決方案。

回答

1

恐怕你可能在這一個運氣不好。我能夠重新創建您的問題:在Access 2013中成功設置表單的UniqueTable屬性的代碼在Access 2013中失敗,並且運行時錯誤消息相同。

Google搜索microsoft access uniquetable會產生數字匹配,其中絕大多數是指在ADP中使用該表單屬性。 ADP的支持是完全從Access 2013中刪除,所以我的猜測是UniqueTable支持被刪除。 (Access 2013 VBA編輯器中的IntelliSense功能仍然提供Me.UniqueTable作爲Form對象的屬性,但Access 2013顯然不允許我們在運行時爲其設置值。)

+0

我很害怕,將是答案*嘆息*。沒有訪問2013年的辦公室然後,直到我們重建這個該死的東西作爲一個Web服務。 – Corey

0

您仍然可以使用Me.UniqueTable以確保從多表中刪除數據時,您的選擇連接到ADO記錄集正在工作。另外me.ResyncCommand使用VBA代碼,不再是表單設計中的一個屬性,而是Form Load等代碼中的表單。

+0

它試圖在導致錯誤的Access 2013 VBA中設置「Me.UniqueTable」。 – Corey

+0

好吧,也許在你的代碼行中的東西可以修復,所以你可以使用ex Me.UniqueTable =「dbo.Customer」在你的存儲過程中使用連接來合併兩個表的sql :) –

0

您可以設置Recordset.Properties( 「唯一表」),例如:

rs.Properties("Unique Table") = "members" 

看到ADO Dynamic Properties