Поведение доступа - он хочет обновлять записи, я хочу, чтобы он вставлял новые, отслеживал старые через отметку времени - PullRequest
1 голос
/ 28 июля 2011

Я проектирую базу данных, в которой я хочу отслеживать изменения в моих таблицах, в данном случае таблица «person», такая, что то, что в моем пользовательском интерфейсе Access выглядит как редактирование записи о человеке, фактически появляется в моем PostgreSQL бэкэнд должен быть новой записью с полем времени и имени пользователя, отражающим время и человека, который сделал это редактирование.

Прежде всего, я никогда не пытался создать подобный дизайн с самого начала, поэтому было бы неплохо успокоиться, если я расскажу об этом разумно. Мой главный вопрос, однако, как это реализовать. В общем, формы доступа, кажется, очень сильно предназначены для редактирования записей, и я не уверен, как я могу аккуратно изменить его поведение, чтобы вместо этого вставлять новые.

Насколько я понимаю, событие BeforeUpdate срабатывает перед обновлением на уровне базы данных. Я хотел бы отредактировать метод BeforeUpdate моей формы с помощью кода вроде:

  1. Отмена обновления базы данных
  2. Обновление метки времени в Access для записи, с которой он работает
  3. Обнулить поле recordid в записи, которая является первичным ключом auto_increment, так что при вставке новый идентификатор записи будет назначен автоматически.
  4. Вставьте новую копию записи, с которой я работаю, в Access
  5. Если необходимо (я думаю, что это так?), Укажите мою форму доступа на новую запись, которую она только что вставила (кстати, как мне на самом деле найти новую запись, которую я вставил? Могу ли я получить ссылку на нее во время вставки? или к автоинкрементному первичному ключу, который был сгенерирован?)

Спасибо за любую помощь, которую может оказать любой.

1 Ответ

1 голос
/ 28 июля 2011

Я бы позволил Access обновить свои таблицы и просто создать оператор вставки для вашего бэкэнда PostgreSQL. Вы можете использовать его в качестве журнала. Попытка отключить текущую запись в доступе кажется сложной и ненужной. Изменение первичного ключа не требуется и должно использоваться для ссылки на измененные записи данных в другой базе данных.

Вы можете использовать VBA в коде позади формы и просто создать другую запись с текущими данными, но использовать функцию Now () для значения метки времени.

...