л.р.6 - Применение технологии доступа к данным Delphi – IBX при создани приложения для работы с БД.
Команды языка SQL для манипулирования данными
========= Отчет по лаб 6 =================
1)+ Приложение не должно использовать компонент IBTable;
2)+ Приложение должно обеспечивать возможность отображения всех данные из
отдельных таблиц базы данных с использованием динамического SQL (выбор
имени таблицы осуществляется пользователем). Использовать для этого только
один компонент IBQuery;
3)+ Приложение должно обеспечивать возможность синхронного отображения
данных из нескольких связанных таблиц базы данных;
-см кнопка "Синхроное отображение Лекарства-Категории-Склад"
4)+ Разработать в приложении для каждой из таблиц отдельные формы,
используя компоненты отображения для представления значений одного поля.
(Эти формы будут использоваться для демонстрации реализации операций
добавления и редактирования данных, хранящихся в таблицах).
5)+ Реализовать на формах, разработанных в п. 4, операции модификации
данных, используя различные способы:
- динамический SQL, --- табл Страны (Countries)
- запросы: Delete, Insert, Update
- компонент UpdateSQL, --- табл Категории лекарств (Kategorii)
- хранимую на сервере процедуру модификации данных
--- табл Лекарства (Lek_List);
- остальные таблицы (Клиенты - Ap_Users, Склад (Sklad)) доступны
только для чтения.
6)+ Реализовать в приложении возможности формирования запроса пользователем,
его выполнения и сохранения в отдельном файле;
7)+ Продемонстрировать навыки работы с оператором SQL – Select, используя
его для сортировки отображаемых данных, выполнения агрегатных функций,
использование условий отбора данных, выполнения операций реляционной
алгебры и т. д.
=============== Заметки ========================
1. Вроде бы для локальной БД логин и пароль остаются от админа, т е
SYSDBA masterkey.
2. Для подключения IBDatabase1(лаб5) лучше использовать редактор
(дв щелчек по значку IBDatabase1 в модуле данных)
3. Не нашел св-во RequestLive у класса TIBQuery.
4. На форме Категории использую IBUpdateSQL. Вроде бы, все работает,
но в БД не сохраняется. Пришлось добавить:
DataModule2.IBDatabase1.ApplyUpdates([DataModule2.ibqCountries]);
После этого работает
------- Работа редактора -------------
(см Unit5.pas):
========
DataModule2.IBUp1.ModifySQL.Clear;
DataModule2.IBUp1.ModifySQL.Append('update KATEGORII');
DataModule2.IBUp1.ModifySQL.Append('set KATEGOR = :KATEGOR');
DataModule2.IBUp1.ModifySQL.Append('where ID_KATEGOR = :OLD_ID_KATEGOR');
===================== Запросы ========
delete from KATEGORII
where
ID_KATEGOR = :OLD_ID_KATEGOR
-------------
insert into KATEGORII
(ID_KATEGOR, KATEGOR)
values
(:ID_KATEGOR, :KATEGOR)
---------------
update KATEGORII
set
ID_KATEGOR = :ID_KATEGOR,
KATEGOR = :KATEGOR
where
ID_KATEGOR = :OLD_ID_KATEGOR
-------------- Refresh: --------
Select
ID_KATEGOR,
KATEGOR
from KATEGORII
where
ID_KATEGOR = :ID_KATEGOR
--------------
***************** Установка программы *************
Распаковать архив. Папки lab6 и
BD_IB_kassa6 (база данных InterBase) вместе с их начинкой
разместить на своем компе (лучше внутри папки Apteka,
где все проекты.). Папка Apteka содержит:
Папки:
BD_IB_kassa6 (БД InterBase алиас kassa6)
BD_kassa (БД алиас kassa4)
BD_kassa5 (БД алиас kassa5)
lab2_1
lab3_1
lab4_1
lab5
lab6
---------
Запустить Apteka6.exe . Выбрать файл KAS6.gdb
(он находится внутри папки BD_IB_kassa6)
-------
Эта БД (алиас kassa6) зарегистрирована
в SQL-Explorer (и это видно в BDE Admin).
Однако, если удалить, проект все равно
работает, так что регистрация вроде бы нужна
только для работы с SQL-Explorer.
Screens