- •Общие сведения о Технологии ado
- •Компоненты доступа к данным
- •Демонстрационная база данных
- •Создание базы данных
- •МодулЬ данных
- •Создание приложения, работающего с базой данных Создание главной формы. Оформим главное окно приложения в виде панели инструментов, содержащей кнопки по числу основных операций (рис. 8).
- •Создание рабочих форм. Перейдем к созданию рабочих форм, открываемых кнопками главной формы. Рабочие формы необходимо сделать модальными.
- •Создание запросов
- •Insert into Имя_таблицы (Список_полей
- •Values (Список_значений)
Insert into Имя_таблицы (Список_полей
Values (Список_значений)
Каждому полю в списке полей должно соответствовать нужное значение в списке значений. Если заполняются все поля записи, список полей вместе с обрамляющими скобками можно опускать. Например:
INSERT INTO Izdelie
VALUES (6, ‘Балтика «Экспортное»’, ‘шт’, 35)
С помощью оператора INSERT можно вставить сразу группу записей. Пусть, например, таблица создана показанным ниже оператором:
CREATE TABLE
NewTable(TNNom SMALLINT, TKod SMALLINT, TKol SMALLINT)
Тогда следующий оператор вставит в нее список изделий для накладной 28:
INSERT INTO NewTable
SELECT * FROM Snakl
WHERE SnNNom = 28
Для удаления записей используется оператор
DELETE FROM Имя_таблицы WHERE Условие_выборки_записей
Например:
DELETE FROM Zakazcik WHERE ZKod = 2
Если опустить секцию WHERE, из таблицы будут удалены все записи. Изменение отдельных полей таблицы реализуется оператором
UPDATE Имя_таблицы SET Имя_поля = 3начение
WHERE Условие_выборки
Например: UPDATE Izdelie SET ICena = 35 WHERE IKod = 1
За словом SET может стоять произвольное количество полей с указанием их значений. Два соседних присваивания Имя_поля=3начение разделяются запятой. Если опустить секцию WHERE, будут изменены значения всех записей таблицы.
Построение запроса в демонстрационной базе данных. Допустим, что пользователь хочет отобрать накладные, для которых сумма отгрузки превышает 10 000 рублей или которые выписаны не ранее 22 сентября 2003 г.:
SELECT NNom, NData, ZNaim, NSumma
FROM Naklad, Zakazcik
WHERE ZKod = NZKod
AND (NSumma>10000 OR NData > = #22.09.03#)
ORDER BY NNom
Модифицируем модуль данных, разместив на нем компоненты ADOQuery1 и DataSource1. В свойстве DataSet источника данных (назовем его DataQuery1) укажем значение ADOQuery1 (имя объекта-запроса), а в объекте ADOQuery1 свойство Connection должно получить значение АDOConnection1.
Запрос строится на основе таблиц Naklad и Zakazcik. Обратимся к свойству SQL компонента ADOQuery1, раскроем окно редактора текста и введем текст запроса. В окне Structure исчезнет красный знак вопроса.
Теперь остается отобразить набор нужных записей на экране. Для этого создадим новую рабочую форму командой File > New > Form – Delphi for Win 32. Сохраним модуль этой формы под именем fmQuery1Unit и добавим его в проект Sale командой Project > Add to Project. Изменим некоторые свойства формы:
Caption = ‘Отобранные ТТН’ BorderStyle = bsDialog
Name = FQuery1 BorderWidth = 2
Height = 210 Width = 416
Разместим на форме компонент Panel1 (Align = alBottom, Caption = ‘ ‘). Расположим на панели компонент DBNavigator1 и кнопку BitBtn1 (Kind = bkClose). В свободной части формы разместим Pane12 (Align = alClient, Caption = ‘ ‘). На этой панели расположим компонент DBGrid1 (Align = alClient).
Командой File > Use Unit свяжем модуль fmQuery1Unit с модулем данных dmSaleUnit. Сохраним все сделанные изменения. Для компонента DBGrid1 раскроем список свойств DataSource и выберем DM –>DataQuery1. Для компонента DBNavigator1 в списке свойств DataSource также выберем DM –>DataQuery1.
Создадим объекты-столбцы для сетки DBGrid1 – дважды щелкнув мышью на сетке, вызовем редактор столбцов и в его контекстном меню выберем команду Add Fields. Добавим последовательно все поля. Далее редактируем свойства каждого столбца в отдельности. Вид выравнивания значений в столбце зададим, обратившись к свойству Alignment, параметры заголовка зададим в свойствt Caption.
Свяжем вызов этой формы с соответствующим пунктом контекстного меню главной формы. Щелкнем правой кнопкой мыши на компоненте PopupMenu1, расположенном на этой форме. Выберем пункт Menu Designer. Для первого элемента меню (объект N1) в свойстве Caption укажем – «Отобранные ТТН». Напишем процедуру обработки события OnClick для этого элемента меню:
procedure TFMain.N1Click(Sender: TObject);
begin
FQuery1.ShowModal;
end;
Командой File > Use Unit добавим модуль fmQuery1Unit в раздел implementation модуля fmMainUnit.
ВНИМАНИЕ! Значение свойства Active запроса Query1 во время работы приложения должно быть равным True.
Вид окна после всех сделанных изменений показан на рис. 14.
Рис. 14. Рабочее окно для запроса «ТТН, по которым поступили ПТР»