Access 2013打破了UniqueTable功能

时间:2013-12-20 00:28:02

标签: ms-access-2013 office-2013

我们有一个相当大的Access前端应用程序,它已在Access 2010上运行。它广泛使用ADO记录集来访问SQL服务器上的数据,并经常使用UniqueTable表单属性。

我们希望明年初将整个办公室迁至Office 2013,但在测试过程中,我们发现Access 2013无法使用我们使用UniqueTable的代码。任何设置UniqueTable的尝试都会导致错误消息:

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

以下代码适用于Access 2010,但在尝试设置UniqueTable时在Access 2013上遇到上述错误:

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"

在寻找解决方案的过程中,我发现只有其他一些案例提到了这个错误,到目前为止还没有解决方案。

3 个答案:

答案 0 :(得分:1)

我担心你在这个问题上可能会失败。我能够重新创建您的问题:在Access 2013中使用相同的运行时错误消息在Access 2010中成功设置表单的UniqueTable属性的代码失败。

Google搜索microsoft access uniquetable会产生一个匹配数字,其中绝大多数都是指在ADP中使用该表单属性。 ADP支持从Access 2013中删除了 ,因此我猜测UniqueTable支持已被删除。 (Access 2013 VBA编辑器中的IntelliSense功能仍然提供Me.UniqueTable作为Form对象的属性,但Access 2013显然不允许我们在运行时为其设置值。)

答案 1 :(得分:0)

您仍然可以使用Me.UniqueTable确保从多表中删除数据时,您对ADO记录集的选择联接正在运行。另外me.ResyncCommand正在使用VBA代码,不再作为表单设计中的属性,而是在代码中的表单后面,如Form Load。

答案 2 :(得分:0)

您可以设置Recordset.Properties(“Unique Table”),例如:

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

请参阅ADO Dynamic Properties