Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

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

htOrResults - Расширение результата условием

Назначение:

Функция выполняет операцию OR (логическое сложение) двух результатов поиска. По сути, происходит расширение первого результата.

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

Операнды, являющиеся списками значений ключа, должны содержать совместимые значения (типы ключей и их длины должны совпадать).

Прототип:

 LPSAB HTAPI htOrResults(
	LPSAB fpDst, /* Блок для приема результата */
	LPSAB fpSrc1,	 /* Блок с первым операндом */
	LPSAB fpSrc2	 /* Блок со вторым операндом */
 );

Параметры

fpDst
содержит адрес БДС, предназначенного для приема результата
fpSrc1
задает адрес БДС, содержащего расширяемые результаты поиска
fpSrc2
задает адрес БДС, содержащего условие расширения

Результат:

адрес БДС, заданного в качестве первого параметра при успешном завершении
NULL в случае ошибки. Код ошибки будет содержаться в поле fpDst->nRetCode

Пример.

Найти людей из 10 или 21 отдела.

 typedef struct tagREC { /* Структура записи таблицы */
     char name[10];
     char sex;
     int depart;
 } REC;
 int depart = 10;
 SAB s10;
 SAB s21;
 SAB s10or21;
 THANDLE hTable;
 . . .
 /* Список людей из 10 отдела */
 if( !htSearch( NULL, &s10, hTable, 3, EQUAL, &depart, NULL ) )
 /* Обработка ошибок */
 . . .
 /* Список людей из 21 отдела */
 depart = 21;
 if( !htSearch( &s10, &s21, hTable, 3, EQUAL, &depart, NULL ) )
 /* Обработка ошибок */
 . . .
 /* Сотрудники из двух заданных отделов */
 if( !htOrResults( &s10or21, &s10, &s21 ) )
 /* Обработка ошибок */
 else
 /* В 10 и 21 отделах s10or21.gFoundCnt сотрудников */