Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

Документация
Функция htFindCoderKey - Найти ключ для заданного толкования

htFindCoderKey - Найти ключ для заданного толкования

Назначение:

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

Прототип:

 int HTAPI htFindCoderKey(
	CHANDLE hCoder, /* Обработчик кодификатора */
	void far *fpKey, /* Для приема значения ключа */
	void far * /* Тестируемое значение толкования */
 );

Параметры

hCoder
определяет обработчик кодификатора. Этот обработчик должен быть получен функцией htLoadCoder
fpKey
определяет буфер для приема искомого значения ключа. По этому адресу занесут значение ключа, если таковое будет найдено
fpValue
определяет буфер, содержащий значение толкования. Это толкование будет сравниваться со списком имеющихся в кодификаторе толкований, для поиска соответствующего ему значения ключа.

Результат:

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

Пример.

Загрузить кодификатор для поля "Пол". Найти значение ключа для толкования "Женщина".

 typedef struct tagSEX { /* Структура записи таблицы полов */
     char sex;	 /* Пол (кодированный) */
     char name[7]; /* Полное наименование пола */
 } SEX;
 CHANDLE hSex;
 int rc;
 int sex;
 int anFields[] = { 1, 2 };
 . . .
 /* Загрузить кодификатор */
 rc = htLoadCoder( "\\table\\sex", NULL, TAB_SHARE, anFields,
		 sizeof(anFields)/sizeof(int), &hSex );
 if( rc < 0 )
 /* Обработка ошибок */
 . . .
 /* Искать ключ */
 rc = htFindCoderKey(( hSex, &sex, "Женщина" );
 if( rc == 0 ) /* Ключ не найден */
	sex = 2;
 else if( rc == 1 ) /* Ключ содержится в переменной sex */
	;
 else goto err; /* Ошибка поиска */
 . . .