Я действительно пишу это из отчаяния после того, как много раз искал ответ и пробовал несколько разных вещей, но безуспешно.
У меня есть база данных Access, куда я недавно перенес таблицы на SQL 2005. Access продолжает функционировать для пользователей как интерфейс, предоставляющий формы, отчеты и запросы.
Однако после перехода к настройке Access FE / SQL BE пользователи сообщают, что иногда , когда они вводят новую запись, они щелкают в подчиненной форме (сохраняя запись) или нажимают сохранить в самом меню, он переходит к существующей записи. Новая запись была сохранена, но по какой-то причине доступ переключается на другую запись при обновлении. Затем пользователь должен закрыть, найти сохраненную запись и продолжить ее редактирование.
Сценарий : пользователь вводит предложение и заполняет все детали предложения, клиент,
дата и т. д., затем щелкает в подчиненной форме позиций, чтобы добавить продукт (или нажимает сохранить в меню), и внезапно
форма цитаты (и подчиненная форма позиции) показывает детали некоторой случайной цитаты. Случайная цитата может быть недавней или много лет назад и не имеет ничего общего с той цитатой, которую они вводили.
Это странное поведение происходит только при вставке новой записи, но не при редактировании существующей записи. Пользователи говорят мне, что это происходит « чаще », когда они собираются добавить новую (цитата, клиент, что угодно) после открытия базы данных.
Я заметил, что это происходит только в формах, которые имеют подчиненные формы, поэтому я сначала подумал, что это связано с отправкой Access через данные подчиненной формы перед сохранением данных формы, что вызывает нарушение PK. Но, похоже, этого не происходит: на сервере SQL нет ошибок, и запись успешно сохранена. Принудительное сохранение пользователями основной записи формы перед добавлением записей подчиненной формы (т. Е. В цитате, принуждение их сохранять цитату до того, как они смогут добавлять позиции) не сработало, это просто вызывает скачок (иногда) при сохранении.
Это не vba, запущенный при сохранении или по току, я установил точки останова на всех обработчиках событий, когда он переходит, и vba не выполняется. Некоторые из «прыгающих» форм не имеют vba на форме. Но у всех есть подчиненные формы. Я подозреваю, что это связано с блокировкой записи.
Сервер, на котором работают таблицы, - это SQL Server 2005, пользователи используют сочетание Access 2000 и 2003, в основном XP SP3 с парой старых Win2k-блоков. Они используют репликацию слиянием, и несколько пользователей используют реплицированные выпуски SSEE2005 и подписываются на главный сервер. Большинство пользователей не реплицируются, просто подключаются напрямую к серверу через ODBC или собственные подключения клиента SQL. Но я убедился, что это происходит со всеми пользователями, обычно один или два раза в день, и это случилось со мной раньше. Так что это не проблема пользователя.
Хуже всего в этом поведении является то, что это происходит только в некоторых случаях, и мне не удалось найти сценарий, который всегда будет вызывать его.
Если кто-то испытывал что-то подобное раньше, пожалуйста, дайте мне знать, как вы с этим разобрались, или даже предложения будут приветствоваться.
Обновление:
(1/10/09) Проблема решена, благодаря Дэвиду Фентону. Установка формы в режим ввода данных (Form.DataEntry = true) перед ее открытием для добавления записей действительно предотвращает переход. Клиент не сообщает о каких-либо проблемах, так как я изменил это неделю назад.