Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка для ИГА.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.58 Mб
Скачать

Вопрос 7 Наборы данных в Delphi. Состояния наборов данных

Под набором данных в Delphi понимается группа записей из одной или нескольких ТБД, доступная для использования через компоненты TTable и TQuery.

TTable содержит записи, источником которых может быть только одна таблица. Если в TTable производилась фильтрация по какому-нибудь условию, то в НД попадут только те записи, которые удовлетворяют этому условию, если нет, то все записи ТБД.

Для связи таблицы с компонентом псевдоним БД, содержащей таблицу, указывается в свойстве DataBaseName, имя таблицы - в свойстве TableName

TQuery содержит записи, источником которых могут являться несколько ТБД, а также агрегированные значения (сумма, минимум, максимум, среднее), просчитанные по полям одной или нескольких таблиц. НД формируется так: выполняется SQL-запрос, представленный оператором SELECT, который записывается в свойстве SQL компонента, и в качестве НД возвращаются записи из таблиц-источников, удовлетворяющие определенным условиям. ТБД-источники перечисляются в разделе FROM оператора SELECT. Условия выборки записей указываются в разделе WHERE. Записи результирующего НД состоят из полей, перечисленных после ключевого слова SELECT (или, если указан символ * - всех полей). Для связи таблиц с компонентом псевдоним БД, содержащей таблицы, указывается в свойстве DataBaseName. В случае, если псевдоним указан, все таблицы в разделе FROM считаются принадлежащими данной БД, в противном случае для каждой таблицы необходимо указать маршрут поиска, а если он не указан, ТБД должны располагаться в текущем каталоге ОС.

Состояния наборов данных.

НД могут находиться в одном из 7 состояний:

1. dsInactive - НД закрыт.

2. dsBrowse - НД открыт, записи просматриваются, но не изменяются.

3. dsEdit - НД находится в состоянии редактирования.

4. dsInsert - НД находится в состоянии вставки новой записи.

5. dsSetKey - НД находится в состоянии поиска записи. По окончании поиска НД переходит в состояние dsBrowse.

6. dsCalcFields - выполняется установление значений вычисляемых полей. Изменения в НД вноситься не могут. После выхода из этого режима НД переходит в предыдущее состояние.

7. dsFilter - обрабатывается фильтрация записей в НД. После выполнения фильтрации НД переходит в состояние dsBrowse.

Открыть НД можно методом Open во время выполнения, или установив свойство Active в Тrue.

Закрыть НД во время выполнения можно методом CIose или установив свойство Active в False.

Перевести НД в режим редактирования можно методом Edit, в режим вставки - методами Insert и Append.

Метод Post приводит к запоминанию изменений в НД, a Cancel - к отмене изменений. Оба метода переводят НД в состояние dsBrowse.

Получить текущее состояние НД можно, используя метод State. Он возвращает константы: . dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey, dsCalcFields, dsFilter.

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

Существует 2 способа работы с НД:

1. Использование операторов SQL. Он предполагает оперирование группами записей. SQL-операторы группового обновления: UPDATE, INSERT, DELETE и выборки групп записей - SELECT.

2. Оперирование единичными записями. Если необходимо изменить, добавить или удалить группу записей, необходимая операция выполняется для каждой из этих записей. Для этого такие записи в НД нужно отыскать, для чего применяются навигационные методы. Они всегда работают с единичной записью и связаны с понятием курсора НД.

О: Под курсором НД понимается указатель текущей записи в конкретном НД.

О: Текущая запись - запись, над которой в данный момент можно выполнять какие-либо действия (удаление, изменение, чтение значений полей).

Методы для изменения курсора НД:

1. proc First - устанавливает курсор на первую запись НД.

2. proc Last - устанавливает курсор на последнюю запись НД.

3. proc Next - перемещает курсор на следующую запись в НД.

4. proc Prior - перемещает курсор на предыдущую запись в НД.

5. fun MoveBy (n: Integer): Integer - перемещает курсор на п записей к концу НД (п > 0) или к началу НД (п < 0).

Определение начала и конца НД:

1. Свойство BOF: Boolean - возвращает True, если курсор установлен на первую запись в НД.

2. Свойство EOF: Boolean - возвращает True, если курсор установлен на последнюю запись НД.

Порядок следования и порядок сортировки записей.

Первая и последняя записи НД не являются всегда фиксированными. Для TTable последовательность расположения записей в НД определяется используемым индексом, определяющим сортировку. Для TQuery порядок следования записей либо случаен, особенно при использовании в качестве источника более одной ТБД, либо упорядочен в порядке перечисления полей в разделе ORDER BY.

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

Навигация по НД вниз (вверх):

WITH Table1 do begin

First (Last),

WHILE not EOF (BOF) do begin

{operation}

Next (Prior);

END; {while}

END; {with}

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