CREATE VIEW
<имяПросмотра> [(столбец_view [,столбец_view ...])]
AS <оператор_select>
[WITH CHECK OPTION];
(cтол6ец_view
[,столбец_view...]) — необязательный список столбцов;
<оператор_select>
— критерий выбора строк, которые будут включены в просмотр;
[WITH CHECK
OPTION] — предотвращение ввода записей, не удовлетворяющих
критерию выбора для обновляемых просмотров;
Создадим просмотр
RENT_COST, который позволит просмотреть данные таблицы RENT:
1) Запустите
утилиту Interactive SQL командой Tools/Interactive SQL
главного меню IBConsole;
2) Используя меню
Query/Execute создайте просмотр RENT_COST командой:
CREATE
VIEW RENT_COST
AS SELECT ТYP, RN FROM RENT
3)
Закройте утилиту;
4)
Инициируйте просмотр из клиентской части системы:
4.1)
Начните новый Delphi-проект;
4.2)
Используя Form Wizard создайте клиент-серверное приложение на
основе компонента TTable, алиаса clsrvExmpl и
"таблицы" RENT.

Поскольку просмотр - это виртуальная таблица, то можно модифицировать ее
данные. Однако это возможно, если запрос соответствует трем условиям:
1)
Просмотр должен формироваться из записей только одной таблицы;
2) В
просмотр должен быть включен каждый столбец таблицы, имеющий атрибут NOT
NULL;
3)
SELECT-оператор просмотра не содержит подзапросы, агрегатные
функции, зарезервированное слово DISTINCT, предложение HAVING,
хранимые процедуры и функции, определенные пользователем. Такой запрос называют
модифицируемый (updatable). Если в определении просмотра
нарушено хотя бы одно из выше перечисленных условий, то он - не
модифицируемый (read-only).
RENT_COST - модифицируемый запроc. Чтобы убедиться, можете
переоценить стоимость аренды однокомнатных квартир:
1)
Используя утилиту Interactive SQL, исполните следующую
команду:
UPDATE
RENT_COST SET RN = 70
WHERE RN = 60
2)
Чтобы изменения вступили в силу, выберите команду Transactions/Commit.
Пример
не модифицируемого просмотра:
1)
Создайте не модифицируемый просмотр REALTY_COST, используя следующую команду:
CREATE
VIEW REALTY_COST
AS SELECT ADR, RN FROM REALTY, RENT
WHERE RENT.TYP = REALTY.TYP
2)
Чтобы убедиться, что просмотр REALTY_COST не модифицируемый,
исполните следующую SQL-команду:
UPDATE
REALTY_COST SET RN = 60
WHERE RN = 70
Контрольный
вопрос: Каким должен быть результат исполнения следующей
команды:
SELECT
* FROM REALTY_COST
Поиск
в наборах данных:
Для поиска записей по полям служат методы Locate и Lookup,
причем поля могут быть неиндексированными. Функция Locate (const
KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean
ищет запись с заданными значениями полей. Если удовлетворяющие условиям поиска
записи существуют, то указатель текущей записи устанавливается на первую из
них. Если запись найдена, функция возвращает значение True, в
противном случае — значение False. Для поиска в наборе данных
также используется функция Lookup(const KeyFields: String;
const KeyValues: Variant; const ResultFields: String): Variant осуществляет
поиск записи, удовлетворяющей определенным условиям, но, в отличие от метода
Locate, не перемещает указатель текущей записи на найденную
запись, а считывает информацию из полей записи.
Поиск
по индексным полям:
Для набора данных Table имеются методы, позволяющие вести
поиск записей только по индексным полям. Перед вызовом любого из этих методов
следует установить в качестве текущего индекс, построенный по используемым для
поиска полям. Методы поиска:
1) FindKey,
SetKey, EditKey и GotoKey -
поиска на точное соответствие;
2) FindNearest,
SetNearest, EditNearest и GotoNearest,
- частичное совпадение заданных для поиска значений и значений полей записей.
Задание:
Выполнить поиск информации об объекте и владельцах недвижимости в таблицах базы
данных Exmpl.gdb. Проверить информацию об арендованных
объектах недвижимости на введенную дату.
Фильтрация
записей:
Фильтрация - это задание ограничений для записей, отбираемых в набор
данных. Фильтрация записей бывает: по выражению и по диапазону. Фильтрация
похожа на SQL-запросы, но менее эффективна, т. к. ограничивает количество
записей, видимых в наборе.
Фильтрация
по выражению:
При использовании фильтрации по выражению набор данных ограничивается
записями, удовлетворяющими выражению фильтра, задающему условия отбора записей.
Достоинством фильтрации по выражению является то, что она применима к любым
полям, в том числе к неиндексированным. В связи с тем, что в процессе отбора
просматриваются все записи таблицы, фильтрация по выражению эффективна при
небольшом количестве записей. Для задания выражения фильтра используется
свойство Filter:string. Если выражение
фильтра не позволяет сформировать сложный критерий фильт-рации, то можно
использовать обработчик события OnFilterRecord. Для
активизации и деактивизации фильтра применяется свойство Filtered:boolean.
Параметры фильтрации задаются с помощью свойства FilterOptions:TFilterOptions.
Это свойство принадлежит к множественному типу и может принимать комбинации
двух значений:
1) focaseinsensitive
— регистр букв не учитывается;
2)
foNoPartiaicompare — выполняется проверка на полное соответствие
содержимого поля и значения, заданного для поиска. Для связанных таблиц на
отбор записей в набор данных также влияет ограничение, налагаемое отношением
"главный-подчиненный" между таблицами БД.
Фильтрация
по диапазону:
Для включения и выключения фильтрации по диапазону применяются методы ApplyRange
- активизирует фильтр и CancelRange – деактивизирует. Методы
SetRangeStart и SetRangeEnd устанавливают нижнюю
и верхнюю границу диапазона, соответственно. Для изменения предварительно
установленных границ диапазона предназначены методы EditRangeStart
и EditRangeEnd. Когда одна из границ диапазона не задана, то
диапазон открыт, т. е. нижняя граница становится равной минимально возможному,
а верхняя граница — максимально возможному значению этого поля. Если фильтрация
выполняется одновременно по нескольким полям, то после вызова методов SetRangeStart
или SetRangeEnd должны стоять несколько операторов
присваивания, каждый из которых определяет границу по одному полю.
Предварительно в качестве текущего должен быть установлен индекс, построенный
по этим полям.
Задание:
1)
Выполнить отбор информации об объекте и владельцах недвижимости в таблицах базы
данных Exmpl.gdb;
2)
Проверить информацию об арендованных объектах недвижимости на введенную период.