Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

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

htSubSearch - Поиск по условию для элемента записи в заданном множестве записей

Назначение:

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

Прототип:

LPSAB HTAPI htSubSearch(
	LPSAB 		fpSave, /* БДС для сохранения результата */
	THANDLE 	hTable, /* Обработчик для таблицы */
	int 		nElementNum, /* Номер элемента таблицы */
	CONDITION 	nCond, /* Условие сравнения */
	void far 	*fpValue1, /* Первое пороговое значение */
	void far 	*fpValue2 /* Второе пороговое значение */
);

Параметры

fpSet
задает адрес БДС, содержащего некоторое множество записей таблицы для просмотра. Это должен быть БДС, содержащий результаты ранее выполненного поиска записей в данной таблице. Этот БДС должен быть "закрыт". Если БДС не задан или к нему открыт доступ, действие функции станет эквивалентым htSearch. То есть будет выполнен поиск среди всех записей таблицы
fpSave
БДС для сохранения результата
hTable
Обработчик для таблицы
nElementNum
Номер элемента таблицы
nCond
Условие сравнения
fpValue1
Первое пороговое значение
fpValue2
Второе пороговое значение

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

Результат:

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

Пример 1.

Найти мужчин, у которых "зарплата" равна 40000.

typedef struct tagREC { /* Структура записи таблицы */
	char name[10];
	char sex;
	unsigned fee;
} REC;
unsigned fee40 = 40000;
int sex = 'M';
SAB sFee;
SAB sMen;
THANDLE hTable;
 . . .
if( !htSearch( NULL, &sTmp, hTable, 3, EQUAL, &fee40, NULL ) )
	printf( "Ошибка поиска: %s\n", htMessage(sTmp.nRetCode) );
 . . .
if( !htSubSearch( &sTmp, &sMen, hTable, 2, EQUAL, &sex, NULL ) )
	printf( "Ошибка поиска: %s\n", htMessage(sMen.nRetCode) );
else 
	printf( "Найдено %ld записей\n", sMen.gFoundCnt );
 . . .