Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

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

htAndResults - Уточнение результата условием

Назначение:

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

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

Прототип:

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

Параметры

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

Результат:

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

Пример 1.

Найти мужчин из 10 отдела.

typedef struct tagREC { /* Структура записи таблицы */
	char name[10];
	char sex;
	int depart;
} REC;
int depart;
SAB sAll10;
SAB sMen;
SAB sMen10;
THANDLE hTable;
 . . .
/* Список людей из 10 отдела */
depart = 10;
if( !htSearch( NULL, &sAll10, hTable, 3, EQUAL, &depart, NULL ) )
	/* Обработка ошибок */
 . . .
/* Список всех мужчин */
if( !htSearch( &sAll10, &sMen, hTable, 2, EQUAL, "M", NULL ) )
	/* Обработка ошибок */
 . . .
/* Оставить лишь мужчин из 10 отдела */
if( !htAndResults( &sMen10, &sMen, &sAll10 ) )
	/* Обработка ошибок */
else
	/* В 10 отделе sMen10.gFoundCnt мужчин */

Пример 2.

Найти бисексуальные фамилии (одинаковые для мужчин и женщин).

typedef struct tagREC { /* Структура записи таблицы */
	char name[10];
	char sex;
	int depart;
} REC;
SAB sMen;
SAB sWomen;
SAB sTmp;
THANDLE hTable;
 . . .
/* Список всех мужчин */
if( !htSearch( NULL, &sTmp, hTable, 2, EQUAL, "M", NULL ) )
	/* Обработка ошибок */
/* Список фамилий мужчин */
if( !htValuesOfKey( &sMen, 1, &sTmp ) )
	/* Обработка ошибок */
htClearResults( &sTmp );
 . . .
/* Список всех женщин */
if( !htSearch( NULL, &sTmp, hTable, 2, EQUAL, "F", NULL ) )
	/* Обработка ошибок */
/* Список фамилий женщин */
if( !htValuesOfKey( &sWomen, 1, &sTmp ) )
	/* Обработка ошибок */
htClearResults( &sTmp );
 . . .
/* Бисексуальные фамилии */
if( !htAndResults( &sTmp, &sMen, &sWomen ) )
	/* Обработка ошибок */
else
	/* Найдено sTmp.gFoundCnt бисексуальных фамилий */