Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

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

htTouchResults - "Освежить" результаты поиска (записи)

Назначение

Найденные в результате выполнения поиска записи (да и не только они) соответствуют данному состоянию таблицы (снимку). Эти результаты можно использовать в качестве операндов логических операций только вместе с результатами других поисков, относящихся к данному состоянию таблицы. Чтение результатов позволяет видеть состояние записей, имевшихся на момент поиска.

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

Для того, чтобы избежать повторного поиска записей после выполнения удаления или модификации записей в таблице, результаты поиска следует "освежить" - скорректировать в соответствии с текущим состоянием таблицы. В частности, учесть удаленные записи (уменьшить число найденных и т.п.).

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

Прототип:

LPSAB HTAPI htTouchResults(
  LPSAB 	fpFresh,	/* Адрес БДС для "свежего" результата */
  LPSAB		fpOld		/* Адрес исходного БДС */
);

Параметры

fpFresh задает адрес БДС, предназначенного для размещения скорректированных ("свежих") результатов
fpOld задает адрес БДС, содержащего результаты поиска. Результат поиска должен содержать записи. Доступ к результатами должен быть закр

Результат

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

Пример.

Найти что-то, скорректировать найденные записи, читать записи не повторяя поиск.

SAB 	sFresh;
SAB 	sOld;
THANDLE hTable;
 . . .
htTableOpen( "expamle", NULL, NULL, TAB_PRIVATE, &hTable );
 . . .
/* Искать все записи таблицы */
htSearch( NULL, &sOld, hTable, 0, GREAT, "\0\0\0", NULL );
 . . .
/* Корректировать таблицу, например, удалить 3-ю запись */
htRecordDelete( hTable, 3L );
 . . .
/* "Освежить" результаты поиска */
/* Повторного поиска не выполняется */
htTouchResults( &sFresh, &sOld );
 . . .