Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

Документация
Функция htSortResultsByUser

htSortResultsByUser - Пользовательская сортировка результатов поиска (записей)

Назначение

Функция предназначена для сортировки найденных в результате поиска записей в соответствии с порядком, определяемом пользователем.

Результаты сортировки не могут использоваться в качестве операндов других функций (кроме доступа к результатам).

Для связки таблиц предполагается сквозная нумерация всех полей "композитной" записи, включая физический номер для каждой составляющей записи. Задание физического номера в качестве критерия сортировки недопустимо для любых результатов.

Записи сортируются в порядке, определяемом пользователем. Значения отобранных полей записи попарно сравниваются между собой, для чего вызывается функция, заданная пользователем.

Суммарная длина полей для сортировки не должна превышать MAX_SORT_LEN байтов.

Прототип:

int HTAPI htSortResultsByUser(
  LPSAB		fpDst,		/* Для приема результата */
  LPSAB		fpSrc, 		/* Адрес исходного БДС */
  int far	*mOrder, 	/* Номера полей упорядочивания */
  int		nOrderCnt, 	/* Число полей упорядочивания */
  LPOFUNC	fpfComp,		/* Пользовательская функция сравнения элементов */
  void far	*fpUser		/* Параметр пользователя для функции */
);

Параметры

fpDst задает адрес БДС, предназначенного для хранения результатов сортировки
fpSrc задает адрес БДС, содержащего результаты поиска. Результат поиска должен содержать записи или являться слиянием группы таблиц (RES_RECORD, RES_JOIN или RES_SORTJOIN).
mOrder задает адрес массива целых чисел, задающих номера полей, значения которых нужны для выполнения сортировки
nOrderCnt определяет число полей упорядочивания. Это число не должно превышать значения MAX_SORT_ORDER.
fpfComp задает адрес определенной пользователем функции, используемой для ранжирования элементов. Эта функция имеет прототип OFUNC
fpUser задает адрес допольнительного параметра пользователя, который будет передаваться в пользовательскую функцию сортировки в качестве третьего параметра

Результат

0 успех
отрицательное число код ошибки