- •Архитектура приложений баз данных
- •Использование ado средствами Delphi
- •Набор данных в Delphi для работы с бд
- •Проектирование базы данных и редактирование данных
- •1) Наименования полей:
- •2) Типы данных:
- •3) Модификация структуры таблицы:
- •4) Определение характеристик таблицы:
- •Validity Checks (Проверка ввода значений)
- •1. Определение общего типа формы бд и источника данных
- •2. Выбор таблицы с данными
- •3. Выбор полей таблицы
- •4. Выбор способа размещения полей
- •5. Определение расположения названий полей
- •6. Размещение связанных полей
- •7. Характеристики окна формы бд
- •1.Запрос на выборку.
- •2.Запрос на добавление.
- •4.Запрос на удаление.
- •Проектирование отчетов
- •Использование запросов при проектировании приложений
- •1.Запрос на выборку.
- •2.Запрос на добавление.
- •4.Запрос на удаление.
- •Создание связей в Delphi
- •Поиск данных
2.Запрос на добавление.
Этот запрос позволяет добавить запись в таблицу и присвоить значения ее полям. Конструкция запроса следующая:
INSERT INTO “<файл с таблицей>” (<поле>{,<поле>}) VALUES (<значение>{,<значение>}).
Рассмотрим подробнее отдельные части запроса:
файл с таблицей – имя файла с таблицей, в которую добавляется запись;
должен быть с расширением и содержать путь;
поле – имя поля, которому задается значение.
VALUES - зарезервированное слово, с которого начинается оператор
задания списка значений полям таблицы; значение – значение из списка
значений, которое задается соответствующему полю новой записи (их
количество должно равняться числу полей).
3.Запрос на обновление.
Этот запрос позволяет обновить значения в записях, которые соответствуют задаваемым условиям. Конструкция запроса следующая:
UPDATE “<файл с таблицей>”
SET <поле> = <значение>{, <поле> = <значение>}
[WHERE <условие отбора>]
Рассмотрим некоторые части запроса:
SET – зарезервированное слово, с которого начинается оператор, задающий список подставляемых значений; <поле> = <значение>{, <поле> = <значение>} – список полей и значений, которые задаются этим полям. [WHERE <условие отбора>] – оператор, задающий условие отбора тех записей, в которых следует обновить данные.
4.Запрос на удаление.
Этот запрос позволяет удалить из таблицы записи, удовлетворяющие заданным условиям. Конструкция запроса следующая:
DELETE FROM «<файл с таблицей>» [WHERE <условие отбора>].
Запрос к БД (Query)
Использование одной компоненты Table позволяет работать только с одной таблицей. Поэтому, когда необходимо работать с несколькими связанными таблицами, нужно создавать соответствующее число компонент Table. В этом случае целесообразно взять компоненту Query класса TQuery, являющегося потомком класса TDBDataSet. Эта компонента позволяет определить набор данных на основе нескольких таблиц с помощью SQL-запроса. Ее также удобно применять, когда таблица БД чрезмерно велика; в этом случае с помощью запроса можно ограничить набор рассматриваемых данных. Использование этой компоненты связано со знанием языка SQL.
Отметим сразу, что можно создать оператор Delphi SQL при помощи компоненты Query следующим образом:
поместить на форму объекты Query, DataSource и связать их вместе;
присвоить псевдоним объекта TQuery свойству DataBaseName;
с помощью свойства SQL ввести указание SQL; 3) установить свойство Active в значение True.
Если каждый шаг был завершен правильно и если BDE установлено корректно, сетка должна будет содержать записи из указанной таблицы.
Delphi позволяет создавать SQL-запросы к БД как статические, в которых текст запроса остается неизменным, так и динамические (или запросы с параметрами). Динамические SQL-запросы содержат параметры, определенные в условиях отбора записей, которые в процессе выполнения программы могут изменяться. Таким образом, с помощью одного динамического запроса можно получать различные результаты при выполнении приложения. Синтаксическая конструкция динамических запросов аналогична статическим, за исключением того, что у них в секции, определяющей условия отбора записи, вместо значения записывается <параметр>, где параметр – имя параметра, вместо которого при выполнении приложения будет подставляться значение.
У класса TQuery отметим следующие наиболее важные свойства, которые он добавляет к наследуемым от классов TDataSet, TBDEDataSet и TDBDataSet:
Local – определяет расположение таблиц (True – локальные таблицы, False – таблицы на SQL-сервере); свойство только для чтения.
RequestLive – свойство логического типа (по умолчанию имеет значение False), определяет возможность изменять набор данных, полученный в результате выполнения запроса. Эта возможность имеется, если свойство имеет значение True, и у запросов, которые основаны на одной таблице и не используют сортировку и агрегатные функции. У остальных запросов результат доступен только для чтения независимо от значения данного свойства. В этих случаях можно посмотреть свойство CanModify для того чтобы увидеть, успешен ли запрос, если же нужно откорректировать таблицу с помощью запроса SQL, то следует использовать команду SQL Update.
SQL – свойство типа TStrings, определяет текст SQL-запроса, который используется при выполнении методов Open или ExecSQL.
UniDirectional – определяет направление перемещения курсора по набору данных, полученному в результате выполнения запроса.
UpdateMode – свойство типа TUpdateMode, определяет способ обновления записей из промежуточного буфера.
Следующие свойства компоненты TQuery используются в динамических SQL-запросах. Приведем некоторые из них:
DataSource – свойство типа TDataSource, определяет источник данных, значения полей которого используются как параметры для динамического запроса.
Params[Index] – свойство типа TParams, задает список элементов типа TParams, которые определяют параметры в динамическом запросе. С помощью этого свойства в редакторе значений параметров задаются начальные величины параметров. Чтобы перейти к редактору значений параметров запроса, нужно активизировать мышью значение этого свойства.
Класс TQuery добавляет к наследуемым от классов TDataSet, TBDEDataSet и TDBDataSet следующие методы (некоторые из них):
ExecSQL – процедура выполняет SQL-запрос.
Prepare – процедура посылает запрос в BDE для проверки синтаксиса и оптимизации. Рекомендуется выполнять для динамических запросов.
События, которые обрабатываются компонентой TQuery, полностью наследуются от класса TDataSet.
При подстановке переменных связи в динамический запрос программным методом с помощью свойства Params выполняются обычно следующие шаги:
необходимо убедиться в том, что таблица закрыта;
подготавливается объект TQuery с помощью выдачи команды Prepare;
Свойству Params присваиваются конкректные значения;
4) Открывается запрос.
Компоненты Rave Reports и отчеты в приложении Delphi
На первый взгляд кажется, что в сфере создания и печати отчетов в Delphi7 произошла небольшая революция. Просматривая первый раз Палитру компонентов, вы не найдете в ней хорошо знакомой по прошлым версиям Delphi страницы QReport. Вместо старого генератора отчетов в состав Delphi 7 включен продукт Rave Reports 5.0 от фирмы Nevrona.
Компоненты QReport по-прежнему доступны разработчику..
Схема создания и внедрения отчетов в приложения Delphi практически не изменилась. В Rave Reports имеются и глобальный класс отчета, и классы полос, и компоненты преобразования данных. Существенным нововведением можно считать только визуальную среду создания отчетов, что несомненно облегчит жизнь создателей отчетов и сделает их работу эффективнее и приятнее.
В Delphi 7 генератор отчетов Rave Reports является основным средством создания отчетов и его компоненты устанавливаются в Палитре компонентов по умолчанию на странице Rave.
Генератор отчетов Rave Reports 5.0
Генератор отчетов Rave Reports 5.0 разработан фирмой Nevrona и входит в состав Delphi 7 в качестве основного средства для создания отчетов. Он состоит из трех частей:
ядро генератора отчетов обеспечивает управление отчетом и его предварительный просмотр, и отправку на печать. Исполняемый код ядра сервера включается в приложение Delphi, делая его полностью автономным при работе с отчетами на компьютере клиента;
визуальная среда разработки отчетов Rave Reports предназначена для разработки самих отчетов. Она позволяет добавлять к отчету страницы, размещать на них графические и текстовые элементы управления, подключать к отчетам источники данных и т. д. Отчеты сохраняются в файлах с расширением rav и должны распространяться совместно с приложениями, использующими их;
компоненты Rave Reports расположены на странице Rave Палитры компонентов Delphi. Они обеспечивают управление отчетами в приложении.
Генератор отчетов устанавливается при инсталляции Delphi в папку \Delphi7\Rave5. Исходные коды компонентов разработчикам в Delphi недоступны.
Безусловно, визуальная среда разработки заметно упрощает процесс создания отчетов и позволяет добиться лучших результатов меньшими усилиями, чем в генераторе отчетов Quick Report, который использовался в предыдущих версиях Delphi. Тем не менее при первом знакомстве с продуктом заметны и его недостатки. Система помощи оставляет тягостное впечатление не только своей крайней лаконичностью, но и фактическими ошибками.
Компоненты Rave Reports и их назначение
Компоненты для создания отчетов и управления расположены на странице Rave Палитры компонентов. Они делятся на следующие функциональные группы.
□ Компонент отчета TRvProject, с точки зрения приложения, и есть отчет. Он обеспечивает загрузку заранее созданного в визуальной среде Rave Reports отчета из файла с расширением rav.
□ Компонент управления отчетом TRvSystem обеспечивает работу приложения с отчетом. Взаимодействуя с компонентом отчета, с одной стороны, и сервером отчета Rave Reports, с другой, этот компонент обеспечивает просмотр и печать отчетов.
□ Компоненты соединения с источниками данных предназначены для подключения различных источников данных к отчетам. При этом могут использоваться технологии доступа к данным ADO, BDE, dbExpress
□ Компоненты преобразования данных позволяют конвертировать отчеты из формата данных Rave Reports в другие форматы (текстовый, PDF, HTML, RTF), а также распечатывать или просматривать отчеты.
Отчет в приложении Delphi
Основой отчета является файл отчета с расширением rav. Он создается в визуальной среде разработки Rave Reports и может содержать произвольное число страниц. Каждая страница может быть оформлена графическими или текстовыми элементами или отображать данные из какой-либо базы данных. Другими словами, файл RAV — это проект будущего отчета, содержащий общую информацию об отчете, оформление его страниц и правила их заполнения.
После создания проект отчета необходимо связать с приложением Delphi. Для этого используется компонент TRvProject (рис. 23.1). Этот компонент обеспечивает представление отчета в приложении.
Но этого недостаточно, чтобы просмотреть или напечатать отчет. Для выполнения этих операций используется код ядра генератора отчета, который автоматически прикомпилируется к исполняемому коду приложения при переносе на любую форму проекта компонентов TRvProject И TRvSystem. Для управления операциями печати и просмотра в проекте должен присутствовать компонент TRvSystem (рис. 23.1).
Компоненты Rave Reports в приложении Delphi
Для того чтобы приложение Delphi могло выполнять функции печати отчетов, разработчик должен выполнить следующий набор операций.
При помощи визуальной среды разработки Rave Reports необходимо создать проект отчета и сохранить его
Перенести в проект приложения в Delphi компонент TRvProject и связать его с файлом проекта отчета (см. ниже) при помощи свойства ProjectFile.
Перенести в проект приложения в Delphi компонент TRvSystem и связать его с компонентом TRvProject. Для этого используется свойство Engine компонента TRvProject
Написать код приложения, обеспечивающий просмотр и печать отчета (при необходимости и другие операции), используя методы компонента TRvProject
Конечно же, это наиболее простой способ включения отчета в приложения. Для решения более сложных задач необходимо изучить использованные выше компоненты более детально.
Визуальная среда создания отчетов
Визуальная среда создания отчетов входит в состав генератора отчетов Rave Reports 5.0. В отличие от генератора отчетов Quick Report, который поставлялся с Delphi 6 и более ранними версиями, визуальная среда в Rave Reports значительно облегчает самый трудоемкий этап в процессе создания отчета и его включения в состав приложения — постраничную разработку шаблона отчета.
Под шаблоном отчета мы подразумеваем совокупность страниц отчета с расположенными на них графическими и текстовыми элементами оформления, а также свойствами и правилами создания отчета, сохраненными в файле с расширением rav.
Каждый файл RAV может включать несколько независимых шаблонов отчетов. Затем эти шаблоны используются в компонентах TRvProject и служат основой для создания и печати отчетов в приложении.
Кроме этого, средствами визуальной среды шаблон отчета может быть подключен к различным источникам данных. При этом могут использоваться следующие технологии доступа к данным:
ADO;
dbExpress;
BDE.
Визуальная среда Rave Reports открывается из меню Tools | Rave Designer главного окна Delphi или при двойном щелчке на компоненте TRvProject. Исполняемый файл Rave.exe расположен в папке Delphi7\Rave5.
Подводя итог сказанному, мы можем выделить несколько основных задач, которые можно решать в визуальной среде создания отчетов:
□ загрузка, редактирование и сохранение шаблонов отчетов в файлах RAV;
создание структуры отчета и определение его основных свойств;
Разработка страниц отчета
Подключение к отчету источников данных
Генерация отчета на основе созданного шаблона, его предварительный просмотр или печать.