Показать сообщение отдельно
Старый 19.11.2008, 08:50   #1  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
887 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Edit-метод и Relation - баг или фича ?
DAX 3.0 SP3

Есть на таблице А edit-метод, редактирующий одно ссылочное поле и возвращающий наименование из ссылочной таблицы B, следующего вида :
X++:
edit Name groupName(boolean _set = false, InvestmentAccessGroupCode _id = this.InvestmentAccessGroupCode)
{
    if(_set) this.InvestmentAccessGroupCode = _id;

    return (select GroupName from InvestmentGroupAccess where this.InvestmentAccessGroupCode == InvestmentGroupAccess.GroupCode).GroupName;
}
У таблицы А по этому полю прописан Relation на таблицу B со свойством Validate = Yes.
Есть форма с гридом по таблице А, один из контролов которого завязан на этот edit-метод.

Ситуация : встаем в форме на запись таблицы А с корректным значением ссылки(и результатом edit-метода, естесственно) и, не вызывая lookup, удаляем в контроле , привязанном к edit-методу и доступному для редактирования, часть текста и делаем переход на соседнюю строку.
В оставленной нами строке результат edit-метода - пустой, значение ссылки на таблицу B - кусок текста, являвшегося результатом нашего редактирования и кастрированного до размера EDT ссылочного поля.

Вопрос - где был обозначенный Relation в моменты изменения записи и перехода с нее и что он вообще делал ?

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

P.S. В 4.0 SP2 FP2 EE аналогично ...
__________________
Мы летаем, кружимся, нагоняем ужасы ...

Последний раз редактировалось TasmanianDevil; 19.11.2008 в 09:12. Причина: P.S. добавлял