2013-12-20 6 views
5

У нас есть довольно большое внешнее приложение Access, которое работает в Access 2010. Он широко использует набор записей ADO для доступа к данным на наших SQL-серверах и часто использует свойство формы UniqueTable.Доступ к разрыву 2013 года Уникальная функциональность

Мы планируем переместить весь офис в офис 2013 в начале следующего года, но во время тестирования мы обнаружили, что Access 2013 не будет работать с нашим кодом, который использует UniqueTable. Любая попытка установить UniqueTable результаты в сообщении об ошибке:

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

Следующий код работает на Access 2010, но встречи выше ошибки в Access 2013 при попытке установить 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" 

При поиске решения Я нашел только пару других случаев, когда эта ошибка упоминалась, и пока нет решений.

ответ

1

Боюсь, что вам может быть не повезло на этом. Я смог воссоздать вашу проблему: код, который успешно установил свойство UniqueTable формы в Access 2010, не удалось в Access 2013 с тем же сообщением об ошибке выполнения.

Поиск в Google для microsoft access uniquetable дает число хитов, и подавляющее большинство из них ссылаются на использование этого свойства формы в ADP. Поддержка ADP была полностью удален из Access 2013, поэтому я предполагаю, что вместе с ним была удалена поддержка UniqueTable. (Функция IntelliSense в редакторе VBA Access 2013 по-прежнему предлагает Me.UniqueTable как свойство объекта Form, но Access 2013, по-видимому, не позволяет нам установить значение для него во время выполнения.)

+0

Я боялся, что должен был быть ответ * Вздох *. Нет доступа к 2013 году для офиса, пока мы не восстановим эту проклятую вещь как веб-сервис. – Corey

0

Вы все еще можете использовать Me.UniqueTable чтобы убедиться, что выбранное вами соединение в наборе записей ADO работает во время удаления данных из многих таблиц. Также me.ResyncCommand работает с кодом VBA, а не как свойство в дизайне формы, а за формой в коде, например Form Load.

+0

Он пытался установить «Me.UniqueTable» в Access 2013 VBA, который вызывал ошибку. – Corey

+0

ok, может быть, что-то в ур-кодовых строках может быть исправлено, поэтому вы можете использовать ex Me.UniqueTable = "dbo.Customer" в ur хранимой процедуре sql, которые используют join для объединения двух таблиц :) –

0

Вы можете установить Recordset.Properties ("Unique Table"), например .:

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

см ADO Dynamic Properties

 Смежные вопросы

  • Нет связанных вопросов^_^