Устранить повтор серийных номеров

MS_4G
Дата: 07.03.2008 15:07:48
Здравствуйте все!
Что-то вдруг застопорился на такой проблеме.

В базе данных в единой таблице регистрируются разные типы оборудования. Число типов открытое, поэтому вопрос расщепления этой таблицы на несколько таблиц (отдельно по каждому типу) не обсуждается.

Для некоторых типов оборудования (заведомо не для всех) в числе параметров фиксируется заводской серийный номер (для остальных графа не заполняется).
Нужно, чтобы при наборе через форму не дать возможность оператору задавать повторно уже имеющийся в таблице серийный номер. Индексами по таблице этого сделать нельзя, т.к. по другим типам оборудования соответствующие пустые поля могут и будут дублироваться.

Начал делать скрипт по обработке события Потеря фокуса для поля Серийный номер, там ловится заданный оператором новый серийный номер (и, конечно, ловится, тот ли это тип оборудования, для которого дублирование не разрешено), но как тогда войти в эту же таблицу для проверки, ведь она уже открыта как источник данных для формы ввода.

Хотелось бы ловить возможные повторы именно в момент ввода, а не после того, когда повторные данные уже будут внесены в таблицу.

Заранее спасибо всем, у кого появятся какие-нибудь соображения на этот счет.
Владимир Саныч
Дата: 07.03.2008 15:19:08
MS_4G
Индексами по таблице этого сделать нельзя, т.к. по другим типам оборудования соответствующие пустые поля могут и будут дублироваться.

Имеется в виду, что для одного серийного номера может быть несколько записей? Если нет, то замените "нельзя" на "можно".

MS_4G
Начал делать скрипт по обработке события Потеря фокуса для поля Серийный номер

Принято для этих целей пользоваться событием AfterUpdate.

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

А Вы попробуйте. Если будут проблемы, напишите. Но проблем не будет.
Программист-Любитель
Дата: 07.03.2008 15:27:18
Либо BeforeUpdate формы либо AfterUpdate поля с номером. DCount даст количество таких же номеров в базе. Проверка очень простая.

Я делаю на BeforeUpdate формы.