- •Создание отчётов с использованием компонентов вкладки qReport.
- •Создание отчётов с использованием генератора отчётов RaveReports
- •Создание отчёта с использованием табличного процессора ms Excel.
- •Разработка приложений с использование кэширования.
- •Архитектура клиент-сервер. Sql-сервер InterBase.
- •Представление. Триггеры
Представление. Триггеры
Представление это заранее созданный и хранящийся в БД SQL-запрос для выборки данных из одной или нескольких таблиц БД. Представления также называют виртуальными или динамическими таблицами, т.к. они не содержат данных, а только ссылаются на таблицы.
Преимущества просмотра состоит в том, что можно один раз отобрать записи и использовать их в дальнейшем без повторного выполнения оператора SELECT. Это выгодно при частом выполнении одинаковых запросов.
Представления также используются для форматирования содержимого таблиц, объединения данных нескольких таблиц и ограничения доступа пользователей к отдельным полям таблицы. Представление создаётся следующим образом:
CREATE VIEW Имя_представления [(Список_столбцов)]
As Инструкция SELECT
Пример1: Создать таблицу с данными о сотрудниках.
CREATE TABLE Sotrudniki
(Nomer Integer Not NULL Primary Key,
Fam VarChar(20),
Name VarChar(20),
Otdel VarChar(20),
Tel VarChar(20),
Zarplata Integer);
К сведениям о телефонах должны иметь все сотрудники, но при этом они не должны знать о зарплате своих коллег.
CREATE VIEW Telefonu
As Select Nomer, Fam, Name, Otdel, tel
From Sotrudniki
Представление с ограниченным доступ к некоторым столбцам таблицы называет вертикальным подмножеством таблиц. Можно образовать горизонтальное подмножество таблиц, например, так:
CREATE VIEW Prosmotr
As Select * From Sotrudniki
Where Zarplata < 10000
Можно образовать комбинацию горизонтального и вертикального подмножества:
CREATE VIEW Prosmotr2
As Select Nomer, Fam, Name, Otdel, tel
From Sotrudniki
Where Zarplata < 10000
Пример2: Вывести имя и фамилию вместе.
CREATE VIEW Prosmotr3(polnoe_imya)
As Select Fam || “ “ || Name
From Sotrudniki;
Удалить просмотр можно следующей командой:
DROP VIEW Имя_представления
Просмотры можно использовать для корректировки данных в таблицах. Для этого просмотр должен удовлетворять следующим требованиям:
В просмотр должны быть включены поля только одной таблицы
В просмотр должны быть включены все поля таблицы, для которых задано ограничение NOT NULL
Просмотр не должен содержать статистических функций, обращение к хранимым процедурам и операторов DISTINCT и HAVING
Создать представление для отображения данных о сотрудниках отдела информационных технологий.
CREATE VIEW Prosmotr4
As Select * From Sotrudniki
Where Otdel=’Информационные технологии’;
Создать представления для отображения данных о товарах. (товар, название товара, цена за единицу, дата прихода и количество).
CREATE VIEW Prosmotr4
As Select Tovary.Tovar, Zena, DatPrihod, Kolvo
From Tovary, Prihod
Where Tovary.Tovar = Prihod.Tovar.;
Триггерами называются подпрограммы, которые выполняются автоматически на стороне сервера в ответ на изменение данных в таблицах БД. Триггеры никогда не вызываются напрямую. В триггерах существует возможность обращаться к старым и новым значениям столбцов с помощью встроенных переменных OLD и NEW. Триггер может выполняться до наступления какого-либо события (BEFORE) или после него (AFTER). Создаётся триггер следующей инструкцией
CREATE TRIGGER Имя_триггера
FOR имя_таблицы
[ACTIVE/ INACTIVE]
{BEFORE/AFTER}{INSERT/DELETE/UPDATE}
[POSITION Число]
As BEGIN
Операторы триггера
END
Для одного события может быть создано несколько триггеров. Все они будут выполнены автоматически. Порядок их выполнения определятся числом, указанным после Position. Триггеры выполняются в порядке возрастания этих чисел. Удаляется триггер следующей командой:
DROP TRIGGER Имя_триггера
Пример. В расчётной ведомости введём отдельный столбец, показывающий рост зарплаты в процентах при её последнем изменении.
CREATE TABLE Zarplata
(Nomer Integer Not NULL,
Summa Float,
Last_change Float);
INSERT INTO Zarplata values (1,3400,0);
INSERT INTO Zarplata values (2,2800,0);
CREATE TRIGGER ROST FOR ZARPLATA
BEFORE UPDATE
AS BEGIN
If (old.summa <> new.summa) then
new.last_change=new.summa-old.summa*100/old.summa;
END;
Update Zarplata Set summa=5000
Where Nomer=1;
Select * From Zarplata