Локальная сортировка полей объекта

Обсуждение возникших проблем, предложений и ошибок ODAC компонентов

Ответить
Kverde
Сообщения: 9
Зарегистрирован: Ср 13 авг 2014 08:51

Локальная сортировка полей объекта

Сообщение Kverde » Ср 18 май 2016 11:21

Подскажите, пожалуйста, можно ли выполнить такую сортировку локально?

Есть функция

Код: Выделить всё

lpu.bl_info.F_GET_BEG_INFO(rs.pid, num, ser) 
возвращает тип данных

Код: Выделить всё

CREATE OR REPLACE TYPE "LPU"."BL_BEG_INFO" is object (
   ID_P_BL NUMBER(8), SER VARCHAR2(7), NUM NUMBER, DATE_BEG DATE, DIA_S NUMBER(7,2), DIA_S_CIPHER VARCHAR2(10),DOCTOR_S NUMBER(5), DOCTOR_S_FIO VARCHAR2(100), DOCTOR_S_SPEC VARCHAR2(50)
)
в датасете прописан запрос

Код: Выделить всё

select 
  lpu.bl_info.F_GET_BEG_INFO(2303849, 10546654, 'ВУ') e
from 
  dual
(для примера результат одна строка)

При выполнении такого кода

Код: Выделить всё

  OraQuery1.Open;
  OraQuery1.IndexFieldNames := 'e.num;';

ошибка
Invalid IndexFieldNames format!

Kverde
Сообщения: 9
Зарегистрирован: Ср 13 авг 2014 08:51

Re: Локальная сортировка полей объекта

Сообщение Kverde » Чт 19 май 2016 05:46

ODAC 9.6.22
Delphi 2010

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Локальная сортировка полей объекта

Сообщение AndreyZ » Чт 19 май 2016 11:31

Вы можете использовать для локальной сортировки свойство IndexFieldNames. В этом случае значением этого свойства будет название поля набора данных, сортировку по которому Вы желаете получить. В приведенном Вами примере запрос вернет не набор данных, а объект типа "LPU"."BL_BEG_INFO". Поэтому при указании в свойстве IndexFieldNames значения «e.num» Вы получаете соответствующую ошибку.

Kverde
Сообщения: 9
Зарегистрирован: Ср 13 авг 2014 08:51

Re: Локальная сортировка полей объекта

Сообщение Kverde » Пт 20 май 2016 05:41

В примере когда датасет открыт в нем оказывается набор полей (в Fields), "e.num", "e.ser" и тд. Другие операции с этими полями не отличаются от того как бы это был обычный select, но вот сортировка не работает. Была бы удобна такая возможность, но если так сделать нельзя то, конечно, есть и другие способы отсортировать.

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Локальная сортировка полей объекта

Сообщение AndreyZ » Пт 20 май 2016 09:17

Для дальнейшего исследования, пожалуйста, пришлите по адресу maximg* devart * com скрипт на создание объектов БД, используемых в Вашем примере

Kverde
Сообщения: 9
Зарегистрирован: Ср 13 авг 2014 08:51

Re: Локальная сортировка полей объекта

Сообщение Kverde » Пт 20 май 2016 10:55

отправил на почту , на всякий случай прикладываю сюда пример
Delphi 2010, Oracle 11

При выполнении
OraQuery1.IndexFieldNames := 'e.num;';
возникает ошибка
Вложения
SortDemo.zip
(5.43 КБ) 186 скачиваний

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Локальная сортировка полей объекта

Сообщение AndreyZ » Пт 20 май 2016 11:56

Мы получили составленный Вами пример. Для использования свойства IndexFieldNames Вы можете использовать имя поля без префикса :

Код: Выделить всё

OraQuery1.IndexFieldNames := 'num';

Ответить