Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

Документация
Функция htOpenCodedResults - Открыть доступ к кодированным записям

htOpenCodedResults - Открыть доступ к кодированным записям

Назначение:

Функция предназначена для открытия доступа к результатам поиска, если ими являются записи (RES_RECORD, RES_SORTED, RES_JOIN и RES_SORTJOIN), содержащие кодированные поля. При последующих операциях чтения результатов, кодированные поля будут заполнены их толкованиями. Функция аналогична htOpenResults и отличается лишь способом задания номеров читаемых полей.

При операциях чтения будут читаться лишь те поля записей-результатов, номера которых были перечислены при открытии. Значения кодированных ключей будут заменены на их толкования. Номера полей и их кодификаторы описываются в структуре CDF

Нумерация полей идет с единицы. Номер 0 отведен для доступа к физическому номеру записи. Номера полей могут быть заданы в произвольном порядке. Повтор номеров полей не допускается. Физический номер записи не может иметь кодификаторов.

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

Прототип:

 int HTAPI htOpenCodedResults(
	LPSAB fpSrc, /* Адрес исходного БДС */
	LPCDF	, /* Описатели читаемых элементов */
	int nFieldCnt /* Число читаемых элементов */
 );

Параметры

fpSrc
определяет адрес БДС, содержащего закрытые результаты поиска
fpFields
задает адрес массива структур, описывающих номера читаемых полей и их возможные кодификаторы В отличие от функции htOpenResults параметр должен быть задан обязательно
nFieldCnt
задает число описателей отбираемых полей

Результат:

0 при успешном завершении
отрицательное число код ошибки

Пример.

Найти список работников и вывести его с учетом  кодификатора.
 typedef struct tagSEX { /* Структура записи таблицы полов */
     char sex;	 /* Пол (кодированный) */
     char name[7]; /* Полное наименование пола */
 } SEX;
 typedef struct tagSTAFF { /* Структура записи таблицы работников */
     char	Fname[20]; /* Фамилия */
     char	Sex;	 /* Пол (кодированный) */
     word	Birthday; /* Дата рождения */
 } STAFF;
 CHANDLE hSex;
 THANDLE hStaff;
 char *fpBuff;
 int rc;
 int sex;
 int anFields[] = { 1, 2 };
 CDF asCodes[3];
 SAB sAll;
 . . .
 /* Загрузить кодификатор */
 htLoadCoder( "\\table\\sex", NULL, TAB_SHARE, anFields,
		 sizeof(anFields)/sizeof(int), &hSex );
 . . .
 /* Искать работников */
 htSearch( NULL, &sAll, hStaff, 0, GREAT, "\0\0\0", NULL );
 . . .
 /* Подготовить описатели полей */
 asCodes[0].nFieldNo = 1; asCodes[0].hCoder = 0;
 asCodes[1].nFieldNo = 2; asCodes[1].hCoder = sex;
 asCodes[2].nFieldNo = 3; asCodes[2].hCoder = 0;
 /* Читать записи результаты */
 htOpenCodedResults( &sAll, asCodes, sizeof(asCodes)/sizeof(CDF) );
 htReadResults( &sAll, fpBuff, wBuffLen );
 . . .