Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

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

htRecordByUniq - Получить запись для заданного значения уникального ключа

Назначение:

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

Прототип:

long HTAPI htRecordByUniq(
	LPSAB     	fpPHO,    	/* БДС "снимка" */
	THANDLE   	hTable,   	/* Обработчик таблицы */
	int       	nKeyNo,   	/* Номер ключа */
	void far  	*fpValue, 	/* Искомоме значение уникального ключа */
	LPRHANDLE 	fphRecord 	/* Обработчик записи */
 );

Параметры

fpPHO
задает БДС, содержащий "снимок" таблицы для поиска. БДС со снимком - БДС содержащий результаты ранее выполненного поиска в данной таблице. Если выполняется первый поиск, этот параметр следует задать равным NULL
hTable
задает обработчик таблицы, записи которой ищутся
nKeyNo
задает номер элемента записи, значения которого сравниваются с пороговыми. Нумерация элементов в записи сквозная, начинается с 1 и включает не только поля, но также группы и подстроки. Предполагается, что элемент является уникальным или суррогатным ключом. Номер 0 отводится для выборки записей в физической последовательности. При этом в качестве порогового значения нужно указать длинное целое, содержащее нужный физический номер
fpValue
задает адрес искомого значения ключа. Для символьных ключей заданное значение дополняется пробелами справа до достижения длины ключа
fphRecord
задает адрес памяти, предназначенной для приема обработчика записи. Если обработчик не нужен параметр следует задать равным NULL

Результат:

положительное число физический номер записи с заданным значением ключа
0 нет такой записи
отрицательное число код ошибки

Пример.

Найти работника по табельному номеру 12345.

typedef struct tagREC { /* Структура записи таблицы */
	char name[10];
	char sex;
	long no;
 } REC;
 int rc;
 long gRecNo;
 REC sRec;
 THANDLE hTable;
 . . .
 /* Найти запись про искомого работника */
 gRecNo = 12345L;
 if( (gRecNo = htRecordByUniq( NULL, hTable, 3, &gRecNo, NULL )) < 0L )
 /* Обработка ошибок */
 . . .
 /* Считать запись */
 if( (rc = htReadRecord( hTable, gRecNo, &sRec )) < 0 )
 /* Обработка ошибок */
 . . .