我们有一个相当大的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"
在寻找解决方案的过程中,我发现只有其他一些案例提到了这个错误,到目前为止还没有解决方案。
答案 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"