Воскресенье, 27 Ноя 2022, 19:34
Uchi.ucoz.ru
Меню сайта
Форма входа

Категории раздела
Высшая математика [11]
Экономическая социология [95]
Основы Менеджмента [64]
Бухгалтерский учёт [157]
Философия [163]
Мировая Экономика [603]
Бизнес планирование [29]
Финансирование и кредитование инвест [105]
Ценообразование [46]
Гражданское право [196]
Права Человека [173]
Основы Маркетинга [207]
Основы энергосбережения [55]
Информатика [0]
Экология и устойчивое развитие [0]
Физика для студентов [0]
Основы права [0]
Политология [0]
Не стандартные примеры на Delphi [169]
Примеры на Delphi7 [108]
Алгоритмы [94]
API [110]
Pascal [152]
Базы Данных [6]
Новости
Чего не хватает сайту?
500
Статистика
Зарегистрировано на сайте:
Всего: 51581


Онлайн всего: 10
Гостей: 10
Пользователей: 0
Яндекс.Метрика
Рейтинг@Mail.ru

Каталог статей


Главная » Статьи » Студентам » Не стандартные примеры на Delphi

Определение номера записи в таблице dBASE
Таблицы dBASE применяют довольно статическую систему нумерации записей. Номер
записи для данной записи (извините за тавтологию) отражает физическую позицию в
табличном файле. Эти номера записей не изменяются вследствие фильтрации,
упорядочивания данных или сортировки. К примеру, первая запись, хранящаяся в
.DBF файле, будет иметь номер записи 1. Возможно, после некоторого
упорядочивания индекса, запись будет последней из 100 записей. В этом случае
запись должна оставаться с тем же номером, а не номером 100, отражающим новую
позицию в сортированном наборе данных. Это противоречит таблицам Paradox, где
соблюдается последовательная нумерация. Последовательная нумерация Paradox
похожа на нумерацию записей dBASE, за исключением большей гибкости и отражению в
номере записи ее текущей позиции в наборе данных. То есть, запись может не
всегда иметь номер, установленный для нее фильтром набора данных, уменьшившим
общее число записей, или при активном индексе, из-за чего может измениться
отображаемый порядок записи.

В приложениях для работы с базами данных, созданных с помощью Delphi и
Borland Database Engine (BDE), DB-компонентами не предусмотрено извлечение и
определение записи таблицы dBASE. Такая операция, тем не менее, возможна с
помощью вызова из вашего приложения функций BDE.

Существует несколько функций BDE, возвращающих информацию о текущей записи
dBASE, например, ее номер. На самом деле, любая функция, заполняющая структуру
BDE pRECProps, вполне достаточна. Например, функции BDE DbiGetRecord,
DbiGetNextRecord и DbiGetPriorRecord. Естественно, только первая из них реально
позволяет получить информацию о текущей записи. Две других перемещают при вводе
указатель на запись, подобно методам Next и Prior компонентов TTable и TQuery.

Структура pRECProps состоит из следующих полей:

iSeqNum: тип LongInt; определяет текущий номер записи (относительно
набора данных, включая фильтрацию и сортировку индекса); используется, если тип
таблицы поддерживает последовательную нумерацию (только Paradox).

iPhyRecNum: тип LongInt; определяет номер записи; используется, если
тип таблицы поддерживает физические номера записи (только dBASE).

bRecChanged: тип Boolean; в настоящее время не используется.

bSeqNumChanged: тип Boolean; в настоящее время не используется.

bDeleteFlag: тип Boolean; указывает на удаленную запись; используется,
если тип таблицы поддерживает "мягкое" удаление (только dBASE).

Одна из этих BDE-функций может быть вызвана из вашего приложения для
заполнения данной структуры, из которой затем может быть извлечен физический
номер записи. Ниже - пример использования для этой цели функции DbiGetRecord.

function RecNo(ATable: TTable): LongInt;
var
R: RECProps;
rslt: DbiResult;
Error: array [0..255] of Char;
begin
ATable.UpdateCursorPos;
rslt := DbiGetRecord(ATable.Handle, dbiNoLock, nil,
@R);
if rslt = DBIERR_NONE then
Result := R.iPhyRecNum
else begin
DbiGetErrorString(rslt, Error);
ShowMessage(StrPas(Error));
Result := -1;
end;
end;
Категория: Не стандартные примеры на Delphi | Добавил: Lerka (22 Ноя 2012)
Просмотров: 670 | Рейтинг: 1.7/ 6 Оштрафовать | Жаловаться на материал
Похожие материалы
Всего комментариев: 0

Для блога (HTML)


Для форума (BB-Code)


Прямая ссылка

Профиль
Воскресенье
27 Ноя 2022
19:34


Вы из группы: Гости
Вы уже дней на сайте
У вас: непрочитанных сообщений
Добавить статью
Прочитать сообщения
Регистрация
Вход
Улучшенный поиск
Поиск по сайту Поиск по всему интернету
Наши партнеры
Интересное
Популярное статьи
Портфолио ученика начальной школы
УХОД ЗА ВОЛОСАМИ ОЧЕНЬ ПРОСТ — ХОЧУ Я ЭТИМ ПОДЕЛИТ...
Диктанты 2 класс
Детство Л.Н. Толстого
Библиографический обзор литературы о музыке
Авторская программа элективного курса "Практи...
Контрольная работа по теме «Углеводороды»
Поиск
Главная страница
Используются технологии uCoz