Как уже отмечалось, вы можете выбрать все 3 в качестве ПК. Или вы можете даже создать уникальный индекс для всех 3 столбцов. Таким образом, эти две идеи свободны от кода.
И последнее, но менее важное: вы можете использовать макрос До изменения и выполнить поиск (поиск) в таблице, чтобы проверить, существует ли существующая запись. До сих пор, учитывая вашу информацию, вероятно, уникальный индекс является наименьшим усилием и не требует, чтобы вы изменили PK на все 3 столбца (что, как отмечалось, является другим решением).
Итак, вы могли бы рассмотретьмакрос перед изменением. И используйте это:
Lookup a Record in MyTable
Where Condition = [z].[Field1]=[MyTable].[Field1] And
[z].[Field2]=[MyTable].[Field2] And
[z].[ID]<>[MyTable].[ID]
Alias Z
RaiseError -123
Error Description: There are other rows with this data
Таким образом, вы можете использовать макрос данных, используйте макрос таблицы до изменения. Убедитесь, что у вас есть код ошибки повышения с отступом «внутри» кода поиска. И обратите внимание, как мы используем псевдоним для поиска, поскольку имя таблицы (MyTable) уже находится в контексте и уже является текущей строкой данных, поэтому мы ищем, используя «z» в качестве псевдонима, чтобы различать текущую строку,и запись поиска.
Итак, с точки зрения обучения, можно использовать приведенный выше макрос таблицы, но он, вероятно, потребует меньше усилий и усилий для простой установки уникального индекса по всем 3 столбцам.