Страница 1 из 1

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

Добавлено: Ср 18 май 2016 11:21
Kverde
Подскажите, пожалуйста, можно ли выполнить такую сортировку локально?

Есть функция

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

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!

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

Добавлено: Чт 19 май 2016 05:46
Kverde
ODAC 9.6.22
Delphi 2010

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

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

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

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

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

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

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

Добавлено: Пт 20 май 2016 10:55
Kverde
отправил на почту , на всякий случай прикладываю сюда пример
Delphi 2010, Oracle 11

При выполнении
OraQuery1.IndexFieldNames := 'e.num;';
возникает ошибка

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

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

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

OraQuery1.IndexFieldNames := 'num';