Показать сообщение отдельно
Старый 19.08.2010, 17:22   #1  
JustNick is offline
JustNick
Участник
 
8 / 10 (1) +
Регистрация: 14.07.2010
Адрес: Москва
Сортировка и вывод полей в lookUp-е
Доброго времени суток. Возникла проблема, никак не поборю )))
Нужно создать лукап, в который выводятся данные из таблицы Месяцы (inf_Months) по условию для одного поля. Условие не меняется все время работы с лукапом.
Таблица хранит месяца работы (ежемесячные периоды), открытые или закрытые.
Структура таблицы следующая:
1. PeriodDate - тип Date, заполняется как первое число каждого месяца в виде 01.08.2010
2. MonthID - текстовое значение периода в виде "2010 Август"
3. PeriodStatus - признак Открыт/Закрыт (тип Enum)

так вот нужно в лукапе вывести ТОЛЬКО MonthID, но отсортированное по значению PeriodDate. Текст лукапа должен содержать также MonthID.
Трудность состоит в сортировке... При первом открытии списка все хорошо, после выбора значения и повторном открытии с сортировкой какая-то беда. Ни по индексу не хочет сортировать, ни по полю. Сортирует верно только если поле сортировки (PeriodDate) добавляется с признаком _returnItem = True, но выводить в текст нужно другое поле.

Заранее спасибо за помыщь
Код:
    Query                   q = new query();
    QueryBuildDataSource    qbds = q.addDataSource(tablenum(inf_Months));
    SysTableLookup          stl = SysTableLookup::newParameters(tablenum(inf_Months), this);
    inf_Months              tblM;
    FormRun                 fr;

    ;
    qbds.addRange(fieldnum(inf_Months, PeriodStatus)).value(SysQuery::value(inf_PeriodStatus::Open));
    stl.parmQuery(q).dataSourceNo(1).addSortIndex(indexnum(inf_Months, PK_inf_Months));
    stl.addLookupfield(fieldnum(inf_Months, PeriodDate));
    stl.addLookupfield(fieldnum(inf_Months, MonthID));
    fr = stl.formRun();
    this.performFormLookup(fr);