В MS Access 2013 У меня есть таблица под названием [Сериалы], который состоит только из 3-х колонка: [ID], [Hashed ID] и [Описание продукта].Event Driven Data Macro для расчета поля в Новой записи - MS Access
[ID] - это инкрементный целочисленный автономный номер и первичный ключ. [Hashed ID] содержит результат функции хеширования, примененной к [ID]. Наконец, [Product Description] содержит пользовательский ввод (функция Hash хранится в модуле VBA в качестве публичной функции).
Что я хотел бы сделать, так это иметь поле [Hashed ID], рассчитанное автоматически после того, как строка будет вставлена в таблицу [Serials].
Я полагаю, что трюк заключается в правильном использовании Макросов данных, управляемых событиями для этой таблицы, но мне удалось выполнить эту работу только с помощью события «Перед изменением» в уже вставленных строках (Следовательно, с сохраненное значение в поле [ID]?). Я потерялся!!!
ОБНОВЛЕНИЕ: Я продолжал играть с событием «Перед изменением» и использовал его для копирования всех вставленных значений в записи на разные пустые столбцы в той же строке. Все они были скопированы, ЗА ИСКЛЮЧЕНИЕМ [ID] КОЛОНКА, которая, по-видимому, просто выбрасывает значение NULL. Может ли быть, что АВТОНОМБЕРЫ или ПЕРВЫЕ КЛЮЧИ НЕ ДЕЙСТВИТЕЛЬНО «ВСТАВЛЕНЫ» на столе, пока все события не будут обработаны? –
Да, к сожалению, когда макрос данных «Перед изменением» запускается, когда вставлена строка, он «видит» значение поля AutoNumber как «Null». Это несмотря на то, что Access уже получил следующее значение AutoNumber и может даже отображать его (например, в представлении Datasheet). Поэтому макрос данных, управляемый событиями, может оказаться непригодным по назначению. –
Спасибо за комментарий! Тот факт, что он показан в представлении Datasheet, делает его настолько антиинтуитивным. Пожалуйста, просмотрите мой ответ ниже, это может быть не идеальное решение, но я думаю, что это эффективный обходной путь! –