ЛР 01-1 1620 (препод) (1018812), страница 8
Текст из файла (страница 8)
Очень легко устанавливаются связи между таблицами. Так , для установки связи между таблицами менеджеров и сделок нужно нажать левую кнопку мыши на CodMen и не отпуская протащить на поле CodMen таблицы сделок. Аналогично устанавливаются все связи.
Далее щелкаем мышкой в тех полях таблиц, которые должны быть выбраны в результирующий набор.
В нижнем окне на закладке Criteria, если нужно указываем дополнительные критерии выбора. Так, например, если нужно выбрать сделки с объемом более 100, то перетаскиваем мышкой в поле Field or Value – Cost из таблицы Sd, в Compare из списка выбираем >, а в третьем поле Field or Value указываем 100.
Можно использовать более сложные условия
После выбора условий, нажав на кнопку быстрого доступа SQL можно увидеть текст сформированного запроса, который можно отредактировать, сохранить во внешнем файле (File – Export to file).
Можно сразу проверить работу запроса, скопировать результаты выполнения в буфер обмена.
При формировании запроса можно использовать операторы =, >, <, >=, <=, <>, LIKE, NOT LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN, IS NULL, or IS NOT NULL.
При выборе из списка на вкладке Criteria
доступны логические операции NOT, OR и AND. Они показываются слева при включенном Row Info.
После установки свойства Query1 Active:=True проект следует сохранить и запустить на выполнение.
Поля в DBGrid следует назвать по-русски (Title- Caption), уменьшить ширину поля (Width – 80).
Установим Query1 Active в false и напишем обработчики
procedure TForm1.FormCreate(Sender: TObject);
begin
Query1.Open;
{ или Query1.Active:=true;}
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Query1.Close;
{ или Query1.Active:=false;}
end;
Сформируем запрос на лету. Добавим Memo-поле, кнопку.
Напишем запрос в мемо –поле, и после нажатия на клавишу Применить сформируем Query
procedure TForm1.FormCreate(Sender: TObject);
begin
{Query1.Open;}
{ или Query1.Active:=true;}
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Query1.Close;
{ или Query1.Active:=false;}
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
with Query1 do
begin
if Active then Close;
SQL.Clear;
SQL.Assign(Memo1.Lines);
Open;
end
end;
Вопрос 7. Отчеты с использованием QuickReport
Откроем старый проект, показывающий совершенные сделки на сумму более 100 руб.
содержащий обработчики:
procedure TForm1.FormCreate(Sender: TObject);
begin
Query1.Open; { или Query1.Active:=true;}
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Query1.Close; { или Query1.Active:=false;}
end;
Д обавим с панели инструментов Qreport компонент QuickRep на форму. Размер и положение особого значения не имеют. Нажмем F11 и установим значение свойства DataSet в Query1. Затем нажмем на + у свойства Bands и установим свойства HasColumnHeader и HasDetail в True.
В позицию DetailBand1 бросим QRDBText и установим его DataSet в Query1, а DataField – в Fam.
В ColumnHeaderBand1 бросим QRLabel и зададим свойство Caption – Менеджеры.
Аналогично добавим еще четыре пары QRDBText и соответствующие заголовки: Fam_1 – Покупатели, Title – Товары, Cost – Цена, Sity – Город.
Выделим на форме Query1 и установим его свойство Active – True;
В ыполнив щелчок правой кнопки мыши на QuickRep1 в появившемся контекстном меню можно выбрать PreView.
При нажатой клавише SHIFT метки QRLabel и QRDBText можно отформатировать, выбрав другой шрифт и Style.
Д ля появления границ следует добавить компонеты QRShape и на них разместить элементы QRDBText.
Для установки одинакового размера и выравнивания следует выделить все QRShare при нажатой клавише SHIFT и из контекстного меню выбрать Align и Size.
После выбора соответствующих опций: Align , Size , Color и свойства Transparent - True подчиненных элементов (в данном случае QRLabel) можно установить желаемый вид отчета
Задав в Bands HasPageHeader – True, можно задать заголовок отчета, отформатировать по вкусу, можно вставить рисунок с помощью компонентов QRImage и QRDBImage.
Но пока можно оценить вид отчета только в режиме предварительного просмотра. Если оттранслировать и запустить приложение на выполнение увидим только заготовку отчета.
Можно добавить кнопку и написать обработчик:
procedure TForm1.Button1Click(Sender: TObject);
begin
QuickRep1.Preview;
end;
Пользователь не должен видеть заготовку отчета, поэтому нужно совсем избавиться от вида данной формы. Для этого нужно убрать кнопку, но добавить в обработчик события OnCreate обращение QuickRep1.PreView:
procedure TForm1.FormCreate(Sender: TObject);
begin
Query1.Open;
QuickRep1.Preview;
end;
Нужно перенести формирование отчета на другую форму. Добавим новую форму, добавим на нее кнопку и напишем обработчик
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.QuickRep1.Preview;
end;
После трансляции получим сообщение о необходимости добавить uses Unit1, нажмем Yes.
После implementation Delphi добавить сама uses Unit1;
Далее форму Form2 нужно сделать главной. Для этого выберем Project – Options и в списке выберем форму Form2
Установим Caption у Form2 на Отчеты,Position – poScreenCenter.
Оттранслируем проект и запустим на выполнение.
На данной странице можно организовать выдачу и других нужных отчетов.
Для создания отчетов на основе таблиц следует пользоваться мастером отчетов.
Создадим проект, содержащий модуль данных, в меню Delphi выберем File - New , переключимся на вкладку Business и выберем QuickReport Wizard
Нажмем на кнопку Start Wizard
|
|
Зададим псевдоним и имя таблицы, выберем необходимые поля
После нажатия на клавишу Finish отчет будет сформирован, можно посмотреть в режиме предварительного отчета
Для просмотра в режиме работы приложения, создадим вторую форму, разместим на ней кнопку быстрого доступа, напишем обработчик
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.QuickRep1.Preview;
end;
вызовем Project – Options , установим главную форму Form2.
После этого оттранслируем и запустим программу на выполнение.
|
|
The end.
Вопрос 8. Работа с ADO
C Delphi 5 возможно использование технологии ADO ( ActiveX Data Object). Это позволяет обойти установку на машине клиента BDE.
Доступом к созданной ранее в Access 97 базе ПродажиПокупки.mdb управляет машина баз данных Microsoft Jet 4.0 Database Engine. В роли провайдера используется Microsoft Jet 4.0 OLE DB Provider.
При использовании Oracle или MS SQL Server соответственно требуются Microsoft OLE DB Provider for Oracle или Microsoft OLE DB Provider for SQL Server.
Продемонстрируем доступ к одной таблице .
Бросим на форму два компонента ADOConnection, ADOTable с закладки ADO, DataSource с Data Access, DBGrid и DBNavigator c Data Controls.
Выделим ADOConnection , установим свойство Connection String.
Выберем Use Connections String и нажмем Build.
На странице Provider Data Link Propeties выберем Microsoft Jet 4.0 OLE DB Provider, а на вкладке Connection укажем путь и имя базы данных Access
|
|
Можно поставить галочку в поле Blank password чтобы не было ненужного в данном случае запроса пароля.
Можно протестировать соединение нажав Test Connection.
На вкладке Advenced устанавливаются режимы доступа
-
Read—только чтение.
-
ReadWrite—чтение и запись.
-
Share Deny None—ничего нельзя использовать совместно несколькими клиентами.
-
Share Deny Read— нельзя совместно использовать данные, открытые в режиме чтения.
-
Share Deny Write— нельзя совместно использовать данные, открытые в режиме записи.
-
Share Exclusive— нельзя совместно использовать данные, открытые в режиме чтения/записи.
-
Write—Только запись
Затем нажмите на ОК.
Установите свойство Connected – true.
У ADOTable свойство Connecton в ADOConnecton1, TableName – Покупатели,
У DataSet – DataSet – ADOTable1.
Настройте DBGRid и DBNavigator DataSource на DataSouce1.
Установите у ADOTable свойство Active – true.
Настройте ширину полей в DBGrid и измените заголовок у таблицы, расположите форму в центре экрана.
Создайте новый проект с использованием ADODataSet. С использованием данного компонента можно выбирать данные из разных таблиц.
Свойство CommandText можно скопировать из базы Access, просмотрев текст запроса в режиме SQL.
Другой способ посмотреть на результаты запроса – воспользоваться компонентом ADOQuery
Для заполнения свойства SQL компонента ADOQuery также можно воспользоваться существующими запросами в базе Access
После установления всех параметров нужно не забывать выставлять значение Active – True.