ник: Санька
Поле со списком у меня было ограничено изначально - это необходимо, чтобы сработало "отсутствие в списке", и код процедуры "после обновления" для этого поля у меня тоже был прописан . Но Lukas туда дописал строку для обновления (правда я пока не разобрался, для какой цели..). И поцедуру "отсутствие в списке" он написал.
В принципе тебе удалось сосредоточить в одном поле уникальность записи по трем полям)) правда смотрится не очень красиво, когда в поле ФИО появляются дата рождения и паспорт)) Но над этим можно поразмышлять...
Я представляю, как оно должно сработать, но не знаю, как это реализовать программно.
Если это в принципе возможно, то код процедуры должен "выйти за рамки" поля со списком. После обновления поля со списком "ФИОУчастника" должен быть отложен перехват ошибки до того момента, пока не будут введены значения в поле "дата рождения" и "номер паспорта", и только после обновления поля "номер паспорта" она должна сработать и выполнить поиск уникальной записи по всем трем полям. (Set rs = Me.Recordset.Clone
rs.FindFirst "[КодУчастника] = .................) И уж тогда, если такая запись отсутствует, сообщить об этом и предложить сделать добавление новой записи.
И все это должно происходить в "клоне" источника строк.
А в завершении процедуры добавление производится в таблицу - источник строк. При этом добавление сделать очень легко, поскольку записи на тот момент уже будут внесены во все три поля формы. Затем делается обновление формы и фокус необходимо оставить в поле "номер паспорта". Вот это было бы то, что надо!
И если мне не изменяет память, именно такую процедуру "отсутствие в списке" с поиском по трем полям мне и написали 7 лет назад. Только вместо поля "ФИОУчастника" было поле "ФИОПеревозчика" и также поля "дата рождения" и "номер паспорта". Я делал базу данных для регистрации нарушений международных автомобильных перевозок по территории Казахстана и она ставилась на постах транспортного контроля.