Показать сообщение отдельно
Старый 26.02.2010, 12:46   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,712 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Да, вобщем-то, решение очевидное. Придется делать много мелких "телодвижений" и организовывать "закат Солнца вручную"

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

Другими словами, поле таблицы должно быть создано на базе EDT, который не имеет Relation на таблицы-источник списка. Соответственно, никакой родительский EDT также не должен иметь этого Relation.

Просто у Relation на EDT нет аналога свойства Validate для Relation у собственно таблицы. Нет возможности отключить проверку. Можно только разорвать связь.

2. Поскольку Relation не существует, то в объекте формы необходимо "вручную" организовать выпадающий список.

2.1 Установить значение свойства LookupButton = always - для отображения кнопки со стрелкой
2.2. Перекрыть метод Lookup чтобы организовать вызов выпадающего списка из нужной таблицы. Примеров как это сделать полно на данном форуме

Ну, а запись введенного значения в таблицу-список можно сделать в разных местах. Например, перекрыть метод Modified объекта ввода. Или в методe Write на таблице-источнике формы.

Вобщем, в любом методе, сохраняющем введенное значение, выполняешь поиск введенного значения в таблице-списке. Если такого значения нет, то создаешь запись в списке.

Только, повторюсь, это все интересно с точки зрения самообразования, но совершенно бессмысленно с точки зрения работы приложения. Вы не только не решите поставленных задач, но и создадите в организации кучу проблем по постоянной чистке базы от всякого хлама. Именно Вы и будете этим заниматься...
За это сообщение автора поблагодарили: EAlex (1).