Проблемы с Access 2007 Project Forms, не позволяющими вводить / обновлять данные - PullRequest
0 голосов
/ 20 декабря 2011

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

У меня есть база данных Access 2007, которую я преобразовал в проект Access 2007. Я создал все таблицы и представления на сервере SQL 2008, получил все необходимые разрешения и начал тестирование.

Где у меня проблемы, у меня есть форма, которая используется для обновления данных. Форма подается из представления (все таблицы в представлении имеют первичные ключи), а представление привязано к схеме. В форме для некоторых полей у меня есть обработчик события «Изменить», который обновляет поле «Last_Worked», чтобы мы могли отслеживать время последнего изменения этих полей. (в поле «Last_Worked» на сервере SQL указано «datetime»). Обычно обработчиками событий являются «Last_Worked = Now ()».

Проблема в том, что для тех полей, где у меня есть обработчик события «Изменить», я ничего не могу поместить в эти поля, я начинаю печатать, и в поле ничего не отображается. Когда я проверяю поле «Last_Worked» в таблице, оно обновляется, но поля, которые я пытался изменить из формы, не меняются.

Я могу обновлять данные и вставлять новые записи из представления данных, чтобы представление, заполняющее форму, не было доступно только для чтения. Если я удаляю обработчики событий, проблема исчезает, но мне нужно регистрироваться, когда эти поля обновляются. Я попытался сделать "Me! Last_Worked = Now ()" и "Me! Last_Worked.Value = Now ()" в обработчиках событий и получить ту же проблему, я не могу обновить / редактировать эти поля.

Это отлично работало в Access, и я даже создал пустую базу данных Access, скопировал формы, создал связанные таблицы с представлениями на сервере, и это сработало. Это просто не работает как проект доступа.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 21 декабря 2011

Когда вы говорите обработчик события, вы имеете в виду, что вы установили источник управления? Вы не можете сделать это, если вам нужен контроль для ввода данных. Также обратите внимание, что событие изменения запускается для каждого небольшого изменения. Вы можете использовать значение по умолчанию для новых записей или запустить VBA в событии обновления некоторого соответствующего элемента управления. Я считаю, что в этом случае вам нужно:

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Me.LastChanged = Now()
End Sub
...