
- •Лабораторна робота № 1 Тема роботи: Реєстрація та створення баз даних в InterBase.
- •1. Керуюча консоль InterBase.
- •2. Реєстрація бази даних в InterBase.
- •3. Створення бази даних в InterBase.
- •Контрольні запитання
- •Лабораторна робота № 2 Тема роботи: Створення таблиць в базах даних в InterBase.
- •1. Типи даних InterBase.
- •2. Створення таблиці.
- •Контрольні запитання
- •Лабораторна робота № 3 Тема роботи: Введення обмежень в базах даних в InterBase.
- •1. Види обмежень в базі даних.
- •2. Первинний і унікальний ключі.
- •3. Зовнішні ключі.
- •4. Обмеження check
- •5. Вилучення обмежень.
- •Контрольні запитання
- •Лабораторна робота № 4 Тема роботи: Використання генераторів ключів в базах даних в InterBase.
- •Створення генераторів.
- •2. Індекси.
- •Контрольні запитання
- •Лабораторна робота № 5 Тема роботи: Використання тригерів в базах даних в InterBase.
- •Означення тригера.
- •Приклад тригера.
- •3. Контекстні змінні.
- •Контрольні запитання
- •Лабораторна робота № 6 Тема роботи: Безпека в InterBase.
- •1. Користувачі.
- •3. Права.
- •4. Роздача прав.
- •5. Організація користувачі у групи за допомогою ролей.
- •6. Анулювання прав.
- •Контрольні запитання
- •Практична робота № 1 Тема роботи: Використання компоненту Database.
- •З’єднання з сервером
- •Контрольні запитання
- •Практична робота № 2 Тема роботи: Використання головної та підлеглої таблиць InterBase засобами Borland Delphi.
- •Контрольні запитання
- •Практична робота № 3 Тема роботи: Використання механізму транзакцій компонента Database.
- •Керування транзакціями.
- •Контрольні запитання
- •Практична робота № 4 Тема роботи: Використання компонент InterBase Express для підключення до сервера.
- •1. Сервер баз даних InterBase і компоненти InterBase Express
- •2. Механізм доступу до даних InterBase Express
- •3. Компонент tibDatabase.
- •Контрольні запитання
- •Практична робота № 5 Тема роботи: Виконання запитів за допомогою компонента tibDataSet.
- •Вибірка даних з таблиці.
- •2. Редагування даних за допомогою візуальних компонентів.
- •3. Програмне редагування даних.
- •Контрольні запитання
- •Практична робота № 6 Тема роботи: Виконання механізму Master-detail в компонентах tibDataSet.
- •Механізм master-detail.
- •Контрольні запитання
- •Література
3. Програмне редагування даних.
Оскільки TIBDataSet породжений класом ТDataSet, у нього є три основні методи для зміни даних: Delete, Insert (Append), Edit. Вставимо на форму кнопку Button. Нехай нам потрібно вставити новий запис в IBDataSet1 при натискуванні цієї кнопки. Обробник події OnClick при цьому буде мати вид:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
with IBDataSet1 do begin
Insert;
FieldByName('EMP_NO').AsInteger:=147;
FieldByName('DEPT_NO').AsInteger:=600;
FieldByName('JOB_CODE').AsString:='VP';
FieldByName('JOB_GRADE').AsInteger:=2;
FieldByName('SALARY').AsInteger:=105900;
FieldByName('HIRE_DATE').AsDateTime:=Now;
FieldByName('JOB_COUNTRY').AsString:='USA';
FieldByName('FIRST_NAME').AsString:='Smit';
FieldByName('LAST_NAME').AsString:='Piter';
Post;
end;
end;
Метод Insert формує пустий буфер для нашого (поки ще не введеного запису), Далі ми задаємо значення потрібних полів. Після виконання методу Post IBDataSet1 виконує запит, записаний у властивості InsertSQL, підставивши замість параметрів значення полів, які ми задали. Якщо запит пройшов успішно, то IBDataSet1 автоматично виконує RefreshSQL для поновлення тільки що вставленого запису – для перевірки змін, які внесені на стороні бази даних.
З А В Д А Н Н Я
Скомпонуйте описаний проект для перегляду і редагування таблиці Customer з бази даних Sales.gdb.
Запустіть програму на виконання.
Вставте в таблицю за допомогою візуальних компонентів новий рядок.
Вилучте цей рядок із таблиці.
Вставте програмно новий рядок у таблицю.
Вилучте цей рядок із таблиці.
Контрольні запитання
Що виконує компонент TIBDataSet?
Що виконує властивість ModifySQL компонента TIBDataSet? Яка команда SQL здійснює це?
Що виконують властивості InsertSQL та DeleteSQL компонента TIBDataSet? Які команди SQL здійснює це?
Практична робота № 6 Тема роботи: Виконання механізму Master-detail в компонентах tibDataSet.
Мета роботи: Навчити створювати підпорядковані запити в таблицях за допомогою компонента TIBDataSet.
ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Механізм master-detail.
Механізм master-detail часто виконується в клієнтських програмах для роботи з базами даних, оскільки саме він дозволяє легко пов’язувати дані з різних таблиць, які одержуються в наслідок нормалізації бази даних.
Додамо в проект нові компоненти:
IBDataBase1, IBTransaction1, IBDataSet1, DataSource1, DBGrid1. Пов’яжемо DataSource1 з IBDataSet1, а DBGrid1 з DataSource1. Вкажемо такий SelectSQL запит для IBDataSet1:
SELECT * FROM Customer;
За допомогою редактора DataSet Editor створимо такі запити:
InsertSQL:
INSERT INTO customer (CUSTOMER_ID, FNAME, LNAME, CREDIT, WORK_ADDRESS, ALT_ADDRESS,CITY, STATE, WORK_PHONE, ALT_PHONE, COMPANY)
VALUES ( :CUSTOMER_ID,:FNAME,:LNAME,:CREDIT,:WORK_ADDRESS,:ALT_ADDRESS,
:CITY,:STATE,:WORK_PHONE,:ALT_PHONE,:COMPANY)
DeleteSQL:
delete from customer
where customer_id= :customer_id
ModifySQL:
update Customer
set
CUSTOMER_ID = :CUSTOMER_ID,
FNAME = :FNAME,
LNAME = :LNAME,
CREDIT = :CREDIT,
WORK_ADDRESS = :WORK_ADDRESS,
ALT_ADDRESS = :ALT_ADDRESS,
CITY = :CITY,
STATE = :STATE,
WORK_PHONE = :WORK_PHONE,
ALT_PHONE = :ALT_PHONE,
COMPANY = :COMPANY
RefreshSQL:
Select
CUSTOMER_ID,
FNAME,
LNAME,
CREDIT,
WORK_ADDRESS,
ALT_ADDRESS,
CITY,
STATE ,
WORK_PHONE,
ALT_PHONE,
COMPANY
From Customer
where customer_id= :customer_id
Тепер необхідно внести зміни до IBDataSet2. По перше, необхідно задати властивість IBDataSet1.DataSource рівною DataSource1. По друге, необхідно зміними IBDataSet1.SelectSQL:
select *
from SALES
where customer_id = :Customer_id
При цьому значення параметра :Customer_id буде автоматично вибиратися з одноіменного поля IBDataSet1: Customer_id.
Запустивши програму, ми побачимо, що при переміщеннях по другій таблиці в першій будуть відображені лише покупці, які здійснили замовлення.
Налаштуємо IBDataSet2 таким чином, щоб при додаванні нового запису про покупця автоматично підставлявся номер поточного замовлення. Для цього напишемо такий обробник OnNewRecord у IBDataSet2:
procedure TForm1.IBDataSet2NewRecord(DataSet: TDataSet);
begin
IBDataSet2.FieldByName('Customer_id').AsInteger := IBDataSet1.Fields[0].AsInteger;
end;
З А В Д А Н Н Я
Скомпонуйте описаний проект і перевірте його роботу.