26.02.2010, 11:38 | #1 |
Участник
|
Выпадающий список с возможностью правки
Добрый день.
Подскажите, пожалуйста, каким образом в АХ можно организовать выпадающий список с возможностью правки. Подробнее: Есть таблица Предмет-Цвет, она помещена на Грид на форме. Поля этой таблицы связаны по типам с таблицами Предметов и Цветов. Т.о. получается, что когда я выбираю в гриде поле Предмет (например шар), то в поле Цвет мне дается на выбор любое значение из таблицы Цветов (например синий, красный и тп). Но если я ввожу с клавиатуры что-нибудь в это поле (чего нет в таблице Цветов), то выдается ошибка, что такого значения не найдено в связанной таблице. Есть ли возможность при вводе таких неизвестных значений сразу же добавлять их в связанную таблицу Цветов, вместо того, чтобы осуществлять проверку на правильность ввода? |
|
26.02.2010, 11:44 | #2 |
Участник
|
Как Вы предполагаете различать реальный ввод нового значения от синтаксической ошибки?
Вы действительно хотите добавить новое значение именно в список (справочник), а не просто разрешить ввести в поле значение, которого нет в списке? На всякий случай: Пользователи НИКОГДА не читают предупреждающих диалогов. Поэтому выдача предупреждающее сообщение с кнопкам Да/Нет - приведет лишь к тому, что пользователи всегда будут жать "Да" и Вы будете заниматься тем, что вручную вычищать базу от ошибочно введенных значений. |
|
|
За это сообщение автора поблагодарили: Silphidae (1). |
26.02.2010, 11:51 | #3 |
Участник
|
Цитата:
Как Вы предполагаете различать реальный ввод нового значения от синтаксической ошибки?
Цитата:
Вы действительно хотите добавить новое значение именно в список (справочник), а не просто разрешить ввести в поле значение, которого нет в списке?
|
|
26.02.2010, 12:46 | #4 |
Участник
|
Да, вобщем-то, решение очевидное. Придется делать много мелких "телодвижений" и организовывать "закат Солнца вручную"
1. Необходимо разорвать связь (Relation) между полем таблицы и таблицей - источником выпадающего списка, поскольку именно эта связь устанавливает запрет на ввод значений, которых нет в связанной таблице. Другими словами, поле таблицы должно быть создано на базе EDT, который не имеет Relation на таблицы-источник списка. Соответственно, никакой родительский EDT также не должен иметь этого Relation. Просто у Relation на EDT нет аналога свойства Validate для Relation у собственно таблицы. Нет возможности отключить проверку. Можно только разорвать связь. 2. Поскольку Relation не существует, то в объекте формы необходимо "вручную" организовать выпадающий список. 2.1 Установить значение свойства LookupButton = always - для отображения кнопки со стрелкой 2.2. Перекрыть метод Lookup чтобы организовать вызов выпадающего списка из нужной таблицы. Примеров как это сделать полно на данном форуме Ну, а запись введенного значения в таблицу-список можно сделать в разных местах. Например, перекрыть метод Modified объекта ввода. Или в методe Write на таблице-источнике формы. Вобщем, в любом методе, сохраняющем введенное значение, выполняешь поиск введенного значения в таблице-списке. Если такого значения нет, то создаешь запись в списке. Только, повторюсь, это все интересно с точки зрения самообразования, но совершенно бессмысленно с точки зрения работы приложения. Вы не только не решите поставленных задач, но и создадите в организации кучу проблем по постоянной чистке базы от всякого хлама. Именно Вы и будете этим заниматься... |
|
|
За это сообщение автора поблагодарили: EAlex (1). |
26.02.2010, 13:47 | #5 |
Участник
|
Посмотрите, как сделан текст проводки в журналах ГК. Может вам такой подход подойдет?
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: Silphidae (1). |
26.02.2010, 13:57 | #6 |
Участник
|
Спасибо большое, Владимир.
Солнце закатилось успешно. По поводу чистки хлама - это будет дополнительная информация по номенклатурам, сродни описаниям, что туда напишет пользователь - не критично. |
|