Возможности Delphi по созданию и редактированию баз данных

Характеристика возможности Delphi по созданию и редактированию баз данных, описание необходимых для этого классов и обращения к базам с помощью SQL-запросов. SQL-выражения для управления транзакциями. Методы построения отчетов, описание их компонентов.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 23.09.2010
Размер файла 63,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

28

Возможности Delphi по созданию и редактированию баз данных

Реферат

Содержание

Введение

1. Сущность BDE

2. Алиасы

3. Основные классы

3.1 Класс TDataSet

3.2 Навигация (Перемещение по записям)

3.3 Класс TDataBase

3.4 Поля

4. Работа с SQL

4.1 Свойство SQL

4.2 Транзакции

4.3 SQL-выражения для управления транзакциями

5. Указание сетевого протокола при соединении с БД

6. Отчеты

6.1 Компоненты для построения отчетов

6.2 Компонент TQuickRep

6.3 Свойства TQuickRep

6.4 Компонент TQRBand

6.5 Построение композитного отчета

Заключение

Список литературы

Введение

С каждым годом загруженность информацией стремительно возрастает. Ее упорядочивание в виде бумажных записей давно перестало быть доминирующим из-за своей колоссальной громоздкости. Куда более проще хранить всю информацию в электронном виде. К тому же такой вид хранения позволяет ограничить доступ к информации с помощью паролей.

База данных, как один из способов упорядочить информацию, является весьма распространенным: БД широко используются на предприятиях, для учета товара на складах, при разработке Интернет-ресурсов и т.д. Для работы с базами данных создано достаточно много специализированных программных средств: FoxPro, Oracle, Microsoft Access и т.д. Однако работать с ними можно и в средах программирования, например, в Borland С++ и Delphi.

Ниже будет рассмотрена работа с БД в среде Delphi, которая позволяет, как создавать собственную БД, так и импортировать готовые (например, БД MS Access) для создания оболочки работы с ними, а также строить отчеты.

1 Сущность BDE

Мощность и гибкость Delphi при работе с базами данных основана на низкоуровневом ядре - процессоре баз данных Borland Database Engine (BDE). Его интерфейс с прикладными программами называется Integrated Database Application Programming Interface (IDAPI). В принципе, сейчас не различают эти два названия (BDE и IDAPI) и считают их синонимами. BDE позволяет осуществлять доступ к данным как с использованием традиционного record-ориентированного (навигационного) подхода, так и с использованием set-ориентированного подхода, используемого в SQL-серверах баз данных. Кроме BDE, Delphi позволяет осуществлять доступ к базам данных, используя технологию (и, соответственно, драйверы) Open DataBase Connectivity (ODBC) фирмы Microsoft. Но, как показывает практика, производительность систем с использованием BDE гораздо выше, чем оных при использовании ODBC. ODBC драйвера работают через специальный “ODBC socket”, который позволяет встраивать их в BDE.

Все инструментальные средства баз данных Borland - Paradox, dBase, Database Desktop - используют BDE. Все особенности, имеющиеся в Paradox или dBase, “наследуются” BDE, и поэтому этими же особенностями обладает и Delphi.

2 Алиасы

Некоторые СУБД сохраняют базу данных в виде нескольких отдельных файлов, представляющих собой таблицы (в основном, все локальные СУБД), в то время как другие состоят из одного файла, который содержит в себе все таблицы и индексы (InterBase). Например, таблицы dBase и Paradox всегда сохраняются в отдельных файлах на диске. Каталог, содержащий dBase .DBF файлы или Paradox .DB файлы, рассматривается как база данных. Другими словами, любой каталог, содержащий файлы в формате Paradox или dBase, рассматривается Delphi как единая база данных. Для переключения на другую базу данных нужно просто переключиться на другой каталог. Как уже было указано выше, InterBase сохраняет все таблицы в одном файле, имеющем расширение .GDB, поэтому этот файл и есть база данных InterBase.

Удобно не просто указывать путь доступа к таблицам базы данных, а использовать для этого некий заменитель - псевдоним, называемый алиасом. Он сохраняется в отдельном конфигурационном файле в произвольном месте на диске и позволяет исключить из программы прямое указание пути доступа к базе данных. Такой подход дает возможность располагать данные в любом месте, не перекомпилируя при этом программу. Кроме пути доступа, в алиасе указываются тип базы данных, языковый драйвер и много другой управляющей информации. Поэтому использование алиасов позволяет легко переходить от локальных баз данных к SQL-серверным базам (естественно, при выполнении требований разделения приложения на клиентскую и серверную части).

3. Основные классы

3.1 Класс TDataSet

TDataSet содержит абстрактные методы там, где должно быть непосредственное управление данными. TDBDataSet знает, как обращаться с паролями и то, что нужно сделать, чтобы присоединить пользователя к определенной таблице.

В большинстве случаев dataset будет иметь прямое, один к одному, соответствие с физической таблицей, которая существует на диске. Однако в других случаях пользователь может исполнять запрос или другое действие, возвращающие dataset, который содержит либо любое подмножество записей одной таблицы, либо объединение (join) между несколькими таблицами.

Прежде всего, необходимо поместить во время дизайна на форму объект TTable и указать путь к используемой таблице. Для этого нужно заполнить в Инспекторе объектов свойства DatabaseName и TableName. В DatabaseName можно либо указать директорию, в которой лежат таблицы в формате dBase или Paradox (например, C:\DELPHI\DEMOS\DATA), либо выбрать из списка псевдоним базы данных (DBDEMOS). Теперь, если свойство Active установить в True, то при запуске приложения таблица будет открываться автоматически.

3.2 Навигация (Перемещение по записям)

Ниже представлен набор методов и свойства TDataSet, обеспечивающий все, что нужно для доступа к любой конкретной записи внутри таблицы:

ѕ procedure First;

ѕ procedure Last;

ѕ procedure Next;

ѕ procedure Prior;

ѕ property BOF: Boolean read FBOF;

ѕ property EOF: Boolean read FEOF;

ѕ procedure MoveBy(Distance: Integer);

ѕ Краткий обзор их функциональных возможностей:

Вызов Table1.First перемещает Вас к первой записи в таблице.

Table1.Last перемещает Вас к последней записи.

Table1.Next перемещает Вас на одну запись вперед.

Table1.Prior перемещает Вас на одну запись Назад.

Можно проверять свойства BOF или EOF, чтобы понять, находитесь ли Вы в начале или в конце таблицы.

Процедура MoveBy перемещает Вас на N записей вперед или назад в таблице. Нет никакого функционального различия между запросом Table1.Next и вызовом Table1.MoveBy(1). Аналогично, вызов Table1.Prior имеет тот же самый результат, что и вызов Table1.MoveBy(-1).

Чтобы начать использовать эти навигационные методы необходимо поместить TTable, TDataSource и TDBGrid на форму. Далее, присоединить DBGrid1 к DataSource1, и DataSource1 к Table1. Затем установить свойства таблицы:

ѕ в DatabaseName имя подкаталога, где находятся демонстрационные таблицы (или псевдоним DBDEMOS);

ѕ в TableName установите имя таблицы CUSTOMER.

3.3 Класс TDataBase

Объект типа TDataBase не является обязательным при работе с базами данных, однако он предоставляет ряд дополнительных возможностей по управлению соединением с базой данных. TDataBase служит для:

ѕ Создания постоянного соединения с базой данных.

ѕ Определения собственного диалога при соединении с базой данных (опрос пароля).

ѕ Создания локального псевдонима базы данных.

ѕ Изменения параметров при соединении.

ѕ Управления транзакциями.

TDataBase является невидимым во время выполнения объектом. Он находится на странице “Data Access” Палитры Компонент. Для включения в проект TDataBase нужно “положить” его на главное окно программы.

Если ведется работа с базой данных, то перед началом работы выполняется процедура соединения с этой базой. В процедуру соединения, кроме прочего, входит опрос имени и пароля пользователя (кроме случая работы с локальными таблицами Paradox и dBase через IDAPI). Если в программе не используется TDataBase, то процедура соединения выполняется при открытии первой таблицы из базы данных. Соединение с базой данных обрывается, когда в программе закрывается последняя таблицы из этой базы (это происходит в том случае, если свойство KeepConnections объекта Session установлено в False). Теперь, если снова открыть таблицу, то процедура установки соединения повторится и это может быть достаточно неудобно для пользователя. Чтобы соединение не обрывалось даже в том случае, когда нет открытых таблиц данной базы, можно использовать компонент типа TDataBase. В свойстве AliasName указывается псевдоним базы данных, с которой работает программа; в свойстве DatabaseName - любое имя (псевдоним БД), на которое будут ссылаться таблицы вместо старого псевдонима базы. Свойство Connected нужно установить в True - процедура соединения с базой будет выполняться при запуске программы. И, наконец, свойство KeepConnection нужно установить в True.

По умолчанию при соединении с базой данных используется диалог опроса имени и пароля пользователя. При желании можно изменить внешний вид диалога или вообще его отменить. Для этого используются свойства и события класса TDataBase - LoginPrompt, Params и OnLogin.

Чтобы отключить опрос имени и пароля свойству LoginPrompt присваивается False. При этом в свойстве Params требуется в явном виде (во время дизайна либо во время выполнения) указать имя и пароль пользователя. Например, в программе можно написать (до момента соединения с базой, например в событии для Form1 OnCreate):

DataBase1.LoginPrompt:=False;

DataBase1.Params.Clear;

DataBase1.Params.Add(`USER NAME=ImyaPolzovatelya');

DataBase1.Params.Add(`PASSWORD=parol');

DataBase1.Connected:=True;

Чтобы использовать свой собственный диалог, в котором можно опрашивать не только имя и пароль пользователя, но и, например, сетевой протокол - можно создать обработчик события OnLogin для DataBase1:

procedure TForm1.Database1Login(Database: TDatabase;

LoginParams: TStrings);

begin

Form2.ShowModal;

if Form2.ModalResult = mrOK then

with LoginParams do begin

Values['USER NAME'] := User_Name;

Values['PASSWORD'] := User_Pass;

end;

end;

Здесь Form2 - новое окно-диалог для ввода имени и пароля, User_Name и User_Pass - строки, куда сохраняются введенные имя и пароль.

Обычно, псевдоним базы данных(Alias) определяется в утилите конфигурации BDE и информация о нем сохраняется в файле конфигурации IDAPI.CFG. Однако в программе можно использовать не только ранее определенный в утилите конфигурации BDE псевдоним базы данных, но и так называемый локальный (т.е. видимый только внутри данной программы) псевдоним. Это иногда бывает нужно, например, для того, чтобы обезопасить программу в случае удаления используемого псевдонима из файла конфигурации BDE.

Для того чтобы создать локальный псевдоним БД, необходимо положить на главное окно проекта компонент DataBase1. Дальнейшие действия можно выполнить с помощью Инспектора Объектов, но удобнее это сделать через редактор компонент. Если щелкнуть дважды мышкой на DataBase1 - появится диалог, показанный на рис.1. В этом диалоге требуется указать имя базы данных - это будет ее локальный псевдоним, на который ссылаются таблицы (свойство DatabaseName); тип драйвера; а также параметры, используемые при соединении с базой данных. Получить список параметров в поле “Parameter Overrides” можно по нажатию кнопки “Defaults”. Набор параметров зависит от типа БД, с которой ведется работа. Этим параметрам нужно присвоить требуемые значения - указать путь к серверу, имя пользователя и т.д. После выхода из редактора компонент имя, указанное в поле “Name” появится в списке имен баз данных для компонент типа TDataSet (TTable, TQuery etc.).

Рисунок 1. Редактор компоненты класса TDataBase

3.4 Поля

В большинстве случаев, когда надо получить доступ из программы к индивидуальные полям записи, можно использовать одно из следующих свойств или методов, каждый из которых принадлежат TDataSet:

property Fields[Index: Integer];

function FieldByName(const FieldName: string): TField;

property FieldCount;

Свойство FieldCount возвращает число полей в текущей структуре записи.

Для того, чтобы прочитать текущее содержание конкретного поля конкретной записи, можно использовать свойство Fields или метод FieldsByName.

4. Работа с SQL

4.1 Свойство SQL

При использовании TTable, возможен доступ ко всему набору записей из одной таблицы. В отличие от TTable, TQuery позволяет произвольным образом (в рамках SQL) выбрать набор данных для работы с ним. Во многом, методика работы с объектом TQuery похожа на методику работы с TTable, однако есть свои особенности.

Свойство SQL - вероятно, самая важная часть TQuery. Доступ к этому свойству происходит либо через Инспектор Объектов во время конструирования проекта (design time), или программно во время выполнения программы (run time).

Интересней, конечно, получить доступ к свойству SQL во время выполнения, чтобы динамически изменять запрос. Например, если требуется выполнить три SQL запроса, то не надо размещать три компонента TQuery на форме. Вместо этого можно разместить один и просто изменять свойство SQL три раза. Наиболее эффективный, простой и мощный способ - сделать это через параметризованные запросы.

Свойство SQL имеет тип TStrings, который означает что это ряд строк, сохраняемых в списке. Список действует также, как и массив, но, фактически, это специальный класс с собственными уникальными возможностями. В следующих нескольких абзацах будут рассмотрены наиболее часто используемые свойства.

При программном использовании TQuery, рекомендуется сначала закрыть текущий запрос и очистить список строк в свойстве SQL:

Query1.Close;

Query1.SQL.Clear;

Следующий шаг - добавление новых строк в запрос:

Query1.SQL.Add(`Select * from Pole');

Query1.SQL.Add(`where Name = ''Imya''');

Метод Add используется для добавления одной или нескольких строк к запросу SQL. Общий объем ограничен только количеством памяти на машине.

Программа THREESQL использует особенность локального SQL, который позволяет использовать шаблоны поиска без учета регистра (case insensitive). Например, следующий SQL запрос:

Select * form Country where Name like 'C%'

ѕ возвращает DataSet, содержащий все записи, где поле Name начинается с буквы `C'. Одна из полезных особенностей свойства SQL - это способность читать файлы, содержащие текст запроса непосредственно с диска.

4.2 Транзакции

Все операции, выполняемые с данными на SQL сервере, происходят в контексте транзакций. Транзакция - это групповая операция, т.е. набор действий с базой данных; самым существенным для этих действий является правило либо все, либо ничего. Если во время выполнения данного набора действий, на каком-то этапе невозможно произвести очередное действие, то нужно выполнить возврат базы данных к начальному состоянию (произвести откат транзакции). Таким образом (при правильном планировании транзакций), обеспечивается целостность базы данных.

4.3 SQL-выражения для управления транзакциями

Для управления транзакциями имеется три выражения:

SET TRANSACTION - Начинает транзакцию и определяет ее поведение.

COMMIT - Сохраняет изменения, внесенные транзакцией, в базе данных и завершает транзакцию.

ROLLBACK - Отменяет изменения, внесенные транзакцией, и завершает транзакцию.

Прежде всего, транзакции в Delphi бывают явные и неявные.

Явная транзакция - это транзакция, начатая и завершенная с помощью методов объекта DataBase: StartTransaction, Commit, RollBack. После начала явной транзакции, все изменения, вносимые в данные относятся к этой транзакции.

Другого способа начать явную транзакцию, нежели с использованием DataBase, нет. (Точнее говоря, такая возможность есть, но это потребует обращения к функциям API InterBase. Однако, это уже достаточно низкоуровневое программирование.) Следовательно, в рамках одного соединения нельзя начать две транзакции.

Неявная транзакция стартует при модификации данных, если в данный момент нет явной транзакции. Неявная транзакция возникает, например, при выполнении метода Post для объектов Table и Query. То есть, если вы отредактировали запись, в DBGrid и переходите на другую запись, то это влечет за собой выполнение Post, что, в свою очередь, приводит к началу неявной транзакции, обновлению данных внутри транзакции и ее завершению. Важно отметить, что неявная транзакция, начатая с помощью методов Post, Delete, Insert, Append и т.д. заканчивается автоматически.

Для модификации данных может использоваться и PassThrough SQL - SQL-выражение, выполняемое с помощью метода ExecSQL класса TQuery. Выполнение модификации через PassThrough SQL также приводит к старту неявной транзакции. Дальнейшее поведение транзакции, начатой таким путем, определяется значением параметра SQLPASSTHRU MODE для псевдонима базы данных (или тот-же параметр в св-ве Params объекта DataBase). Этот параметр может принимать три значения:

1) SHARED AUTOCOMMIT - слово SHARED указывает на то, что оба вида транзакций(через Passthrough SQL и через методы TTable и TQuery) разделяют одно и то же соединение к базе данных. Слово AUTOCOMMIT указывает на то, что неявная транзакция, начатая через Passthrough SQL, завершается после выполнения действия по модификации данных (автоматически выполняется COMMIT).

2) SHARED NOAUTOCOMMIT - отличается от предыдущего тем, что неявная транзакция, начатая через Passthrough SQL, не завершается после выполнения, ее нужно явно завершить, выполнив SQL-выражение “COMMIT”.

3) NOT SHARED - транзакции разных типов работают через разные соединения с базой. Данное значение параметра подразумевает также NOAUTOCOMMIT. То есть все неявные PassthroughSQL-транзакции нужно завершать явно - выполняя SQL-выражение “COMMIT” для Passtrough SQL.

Рассмотрим возможные сценарии поведения транзакций при разных значениях параметра.

В первом случае, если нет в данный момент начатой транзакции, то попытка модификация данных методами TTable или TQuery, как и выполнение через Passtrough SQL какой-либо операции приведет к старту неявной транзакции. После выполнения, такая транзакция будет автоматически завершена (если не возникло ошибки по ходу транзакции). Если уже имеется начатая явно (метод StartTransaction объекта DataBase) транзакция, то изменения будут проходить в ее контексте. Все транзакции используют одно и то-же соединение.

Во втором случае все происходит, как в первом. Отличие в том, что неявная PassthroughSQL-транзакция не завершается, пока не будет выполнена команда “COMMIT”.

В третьем случае, при выполнении команды Passthrough SQL, будет установлено еще одно соединение, начата неявная транзакция и выполнены действия по модификации данных. Транзакция не будет завершена, пока не будет выполнена команда “COMMIT”. Наличие транзакции, начатой явно с помощью DataBase никак не отразится на ходе выполнения PassthroughSQL-транзакции. Пока PassthroughSQL-транзакция не завершится, изменения, внесенные ей, не будут видны в объектах Table и Query, работающих через другое соединение. PassthroughSQL-транзакции можно рассматривать в некотором смысле, как транзакции из другого приложения.

Взаимодействие транзакций данной программы с транзакциями из других приложений определяется свойством TransIsolation объекта DataBase. Для InterBase имеет смысл два значения: tiReadCommitted и tiRepeatableRead. Выполнение метода StartTransaction в этих двух случаях равносильно выполнению SQL-выражений, соответственно:

SET TRANSACTION READ WRITE WAIT ISOLATION LEVEL READ COMMITTED

и

SET TRANSACTION READ WRITE WAIT ISOLATION LEVEL SNAPSHOT

5 Указание сетевого протокола при соединении с БД

В случае с InterBase можно в явном виде указать, какой сетевой протокол используется при соединении с базой данных. Эта установка выполняется либо в утилите конфигурации BDE, либо в программе - нужно изменить параметр “SERVER NAME”, который содержит полный путь к файлу с базой данных.

ПротоколПараметр SERVER NAME

TCP/IPIB_SERVER:PATH\DATABASE.GDB( nt:c:\ib\base.gdb )( unix:/ib/base.gdb )

IPX/SPXIB_SERVER:PATH\DATABASE.GDB( nw@sys:ib\base.gdb )

NetBEUI\\IB_SERVER\PATH\DATABASE.GDB( \\nt\c:\ib\base.gdb )

6 Отчеты

6.1 Компоненты для построения отчетов

На странице палитры компонентов QReport расположено более двух десятков компонентов, применяемых для построения отчетов.

Центральным компонентом является TQuickRep, определяющий поведение отчета в целом. С помощью других компонентов создаются составные части отчета.

TQRBand - заготовка для расположения данных, заголовков, титула отчета и др. Отчет, в основном, строится из компонентов TQRBand, которые реализуют:

ѕ область заголовка отчета;

ѕ область заголовка страницы;

ѕ область заголовка группы;

ѕ область названий столбцов отчета;

ѕ область детальных данных, предназначенную для отображения данных самого нижнего уровня детализации;

ѕ область подвала группы;

ѕ область подвала страницы;

ѕ область подвала отчета.

TQRStringsBand - имеет то же назначение, что и TQRBand. Отличается встроенным списком строк Items, содержимое которого становится видным в режиме печати и предварительного просмотра, если на компонент TQRStringsBand положен компонент TQRExpr. Для каждой строки в Items выводится своя полоса TQRStringsBand.

TQRSubDetail - дочерняя полоса. Привязывается к родительской полосе и служит для ее расширения. Любая полоса может стать родительской с помощью установки значения True в ее свойство HasChild.

TQRGroup - применяется для группировок данных в отчетах.

TQRLabel - позволяет разместить в отчете произвольную текстовую строку.

TQRDBText - служит для вывода в отчет содержимого текстового поля набора данных.

TQRExpr - применяется для вывода значений, являющихся результатом вычислений выражений. Алгоритм вычисления выражений строится при помощи редактора формул данного компонента.

TQRSysData - служит для вывода в отчете системной величины: даты, времени, номера страницы и т.п.

TQRMemo - вставляет в отчет многостраничный текст.

TQRExprMemo - используется для создания многострочных вычисляемых полей.

TQRRichText - вставляет в отчет многострочный текст в формате RTF.

TQRDBRichText - служит для вывода в отчете полей НД, содержащих многострочный текст в формате RTF.

TQRShape - служит для вывода в отчете графических фигур, например, прямоугольников.

TQRImage - служит для вывода в отчете графической информации, источником которой является поле набора данных.

TQRPreview - базовый компонент для создания нестандартных окон предварительного просмотра. Стандартное окно реализуется с помощью метода Preview компонента TQuickRep.

TQRXXXFilter - фильтрующие компоненты для преобразования отчета в текст, страницу HTML и т.п. при печати отчета.

TQRChart - служит для встраивания в отчет графиков.

6.2 Компонент TQuickRep

При размещении этого компонента на форме в ней появляется сетка отчета (рис.2). В дальнейшем в этой сетке располагаются составные части отчета, например, полосы TQRBand (рис.3).

Рисунок 2. Пустая сетка отчета. Образуется после размещения на форме компонента TQuickRep.

Рисунок 3. Сетка отчета с размещенными в ней компонентами отчета

6.3 Свойства TQuickRep

Свойство

Назначение

property Bands: TQuickRepBands;

Объект Bands содержит логические свойства, которые после установки в них значений True включают в отчет: HasColumnHeader - заголовки столбцов; HasDetail - детальную информацию; HasPageFooter - подвал страницы; HasPageHeader - заголовок страницы; HasSummary - подвал отчета; HasTitle - заголовок отчета.

property Dataset: TDataSet;

Указывает набор данных на основе которого создается отчет. Если нужно вывести связанную информацию из нескольких таблиц БД, ее объединяют в одном НД при помощи компонента TQuery. Информацию из нескольких связанных НД можно включать в отчет, если эти НД связаны в приложении отношением главный-подчиненный. В этом случае в качестве НД отчета указывается главный набор, а ссылка на соответствующие подчиненные наборы осуществляется в компонентах TQRSubDetail. Если в отчет нужно включить информацию из несвязанных НД, применяется композитный отчет, то есть отчет, составленный из группы других отчетов.

property Frame: TQRFrame;

Определяет параметры рамки отчета: Color - цвет линий; DrawBottom - наличие линии снизу; DrawLeft - наличие линии слева; DrawRight - наличие линии справа; DrawTop - наличие линии сверху; Style - стиль линии (сплошная, пунктирная и т.п.); Width - толщина линии в пикселях.

property Options: TQuickReportOptions;

Содержит множество из следующих логических значений: HasFirstHeader - разрешает печатать заголовок первой страницы; HasLastFooter - разрешает печатать подвал последней страницы; Compression - разрешает сжимать отчет при выводе его в метафайл.

property Page: TQRPage;

Определяет параметры страницы отчета. Все подсвойства этого сложного свойства доступны в окне Report Setting (см. ниже группы Page size и Margin окна редактора свойств).

property PrintIfEmpty: boolean;

Разрешает/запрещает печатать отчет в том случае если он не содержит данных.

property ReportTitle: String;

Имя отчета (не его заголовок !). Используется для идентификации отчета в задании на сетевую печать, возвращается компонентом QRSysData при Data = ReportTitle и может использоваться для набора одного из нескольких доступных отчетов.

property ShowProgress: boolean;

Разрешает/запрещает показывать индикатор процесса печати отчета.

property SnapToGrid: boolean;

Если содержит True, размещаемые в отчете компоненты привязываются к сетке отчета.

type TQRUnits = (Inches, MM, Pixels, Native, Characters);

property Units: TQRUnits;

Определяет единицы измерения расстояний в отчете: Inches - дюймы; MM - миллиметры; Pixels - пиксели; Native - внутренние единицы TQuickRep (равны 0,1 мм); Characters - символы текста.

property Zoom: Integer;

Определяет масштаб отображения отчета (в процентах от его размеров на листе бумаги) на этапе разработки. Может иметь значение в диапазоне 1..300. Значение свойства не учитывается при печати отчета или в режиме его предварительного показа.

Многие свойства отчета можно установить на этапе конструирования с помощью редактора свойств - вызовите локальное меню компонента TQuickRep и выберите опцию Report Settings.

Ниже представлены методы работы с отчетами:

Метод

Назначение

procedure NewColumn;

Реализует вывод информации в следующей колонке отчета, а если определена единственная колонка, - в его следующей странице.

procedure NewPage;

Реализует вывод информации в следующей странице отчета.

procedure Prepare;

Готовит отчет для вывода в файл.

procedure Preview;

Выводит стандартное окно предварительного просмотра.

procedure Print;

Печатает отчет на принтере.

procedure PrintBackGround;

Инициирует печать отчета в фоновом режиме (в отдельном потоке команд). После завершения печати вызывается обработчик события OnAfterPrint.

procedure PrinterSetup;

Вызывает стандартное окно установки параметров принтера.

Для вывода отчета в файл нужно сначала подготовить его с помощью обращения к методу Prepare, затем сохранить в файле методом Save объекта TQuickRep.QRPrinter, после чего уничтожить этот объект и поместить NIL в свойстве TQuickRep.QRPrinter:

MyReport.Prepare;

MyReport.QRPrinter.Save(`REport.QRP');

MyReport.QRPrinter.Free;

MyReport.QRPrinter := NIL;

6.4 Компонент TQRBand

Компоненты TQRBand являются основными частями отчета и используются для размещения на них отображающих компонентов, таких как TQRLabel, TQRDBText, TQRImage и т.п.

Свойства компонента:

Свойство

Назначение

property AlignToBottom: boolean;

Если имеет значение True полоса печатается непосредственно над подвалом страницы вместо обычного расположения справа/снизу от предыдущей полосы.

type TQRBandType = (rbTitle, rbPageHeader, rbDetail, rbPageFooter, rbSummary, rbGroupHeader, rbGroupFooter, rbSubDetail, rbColumnHeader);

property BandType: TQRBandType;

Указывает назначение полосы: rbTitle - содержит заголовок отчета; rbPageHeader - содержит заголовок страницы (на первой странице печатается под rbTitle); rbDetaul - содержит информацию из НД; выводится всякий раз при переходе на новую запись НД; эта полоса повторяется для всех записей DataSet, начиная с первой записи и заканчивая последней; позицирование на первую запись и последовательный их перебор осуществляется компонентом TQuickRep автоматически; rbPageFooter - содержит подвал страницы; выводится в конце каждой страницы отчета после всех других полос; rbSummary - подвал отчета; выводится на последней странице отчета после всей иной информации, но перед подвалом последней страницы; rbGroupHeader - содержит заголовок группы; применяется при группировках информации в отчете и выводится всякий раз при выводе новой группы; rbGroupFooter - содержит подвал группы; выводится всякий раз при окончании вывода группы, после всех данных группы; rbSubDetail - содержит детальную информацию из подчиненного НД при выводе в отчете информации из двух или более наборов данных, связанных в приложении как главный-подчиненный; этот тип назначается полосе автоматически при размещении на форме компонента TQRSubDetail; rbColumnHeader - содержит заголовки столбцов; размещается на каждой странице отчета после заголовка страницы.

property Enabled: boolean;

Разрешает/запрещает печать полосы.

property ForceNewColumn: boolean;

Если содержит True, полоса печатается в следующей колонке.

property ForceNewPage: boolean;

Если содержит True, полоса печатается на новой странице.

property HasChild: boolean;

Если содержит True, полоса имеет дочернюю полосу TChildBand. Установка True в это свойство автоматически создает в отчете

События

property AfterPrint: TQRAfterPrintEvent;

и

property BeforePrint: TQRBeforePrintEvent;

наступают соответственно до и после печати полосы. Метод

function AddPrintable(PrintableClass: TQRNewComponentClass): TQRPrintable; используется для вставки в полосу отображающего компонента в процессе прогона программы. Он автоматически устанавливает между полосами отношение собственности.

Компоненты TQuickRep и TQRBand являются минимально достаточными для создания простейшего отчета, не содержащего внутри себя группировок информации.

6.5 Построение композитного отчета

Композитный (составной, сложный) отчет объединяет в себе несколько простых отчетов. При печати композитного отчета, входящие в его состав простые отчеты печатаются друг за другом.

Композитный отчет реализуется при помощи компонента TQRCompositeReport. В его обработчике события OnAddReport ранее определенные простые отчеты добавляются в списковое свойство Report. Например, так:

property TCompositnyjOtchet.QRCompositeReport1AddReports(Sender: TObject);

begin

with QRCompositeReport1 do

begin

Reports.Add(ManyGroup.QuickRep1);

Reports.Add(Prostoj.QuickRep1);

end

end;

В этом примере композитный отчет составляется из двух отчетов: QuickRep1 (определенный в форме ManyGroup) и QuickRep1 (определенный в форме Prostoj). Почать композитного отчета или его предварительный просмотр осуществляется так же, как для простых отчетов, например

QRCompositeReport1.Preview;

Заключение

Легко заметить, что работа с БД в Delphi не так проста. С другой стороны, присутствует довольно широкий спектр возможностей, а также Delphi позволяет создать довольно функциональный и удобный интерфейс. При выборе программного средства для работы с БД часто приходится учитывать степень защиты от внешних атак. В этом плане Delphi сильно проигрывает Oracle, поэтому если нужна хорошо защищенная БД, то не следует создавать ее в Delphi.

Список литературы

1. Архангельский А.Я. Программирование в Delphi: учебник по классическим версиям Delphi.

2. А.Я. Архангельский - М.: Бином, 2008. - 1154 с.

3. Культин Н. Delphi в задачах и примерах./Н. Культин - СПб.: БХВ-Петербург, 2008. - 288 с.

4. Фаронов В. В. Delphi: программирование на языке высокого уровня./В. В. Фаронов - СПб.: Питер, 2009. - 639 с.

5. Хомоненко А., Гофман В., Мещеряков Е. Delphi 7./А. Хомоненко, В Гофман, Е. Мещеряков - СПб.: БХВ-Петербург, 2008. - 1216 с.


Подобные документы

  • Построение банков данных. Инструментальные средства баз данных Borland. Принцип работы и архитектура баз данных в Delphi. Навигационный способ доступа к базам данных: операции с таблицей, сортировка и перемещение по набору данных, фильтрация записей.

    курсовая работа [642,7 K], добавлен 06.02.2014

  • Общая характеристика системы программирования Delphi, а также принципы создания ее компонентов. Описание значений файлов приложения, созданного с помощью Delphi. Структура и свойства библиотеки визуальных компонентов (Visual Component Library или VCL).

    отчет по практике [1,1 M], добавлен 07.12.2010

  • Общая характеристика Delphi как интегрированной среды разработки программного обеспечения. СУБД Access, ее возможности. Создание базы данных в Access для комиссионного букинистического магазина. Создание запросов и фильтров. Описание работы программы.

    курсовая работа [3,1 M], добавлен 25.05.2015

  • Современные базы данных и систем управления ими. Методы построения их приложений. Разработка СУБД на примере "Бюро находок", обеспечивающей пользователю возможности по пополнению, редактированию, просмотру и анализу базы данных. Реализация БД в MS Access.

    курсовая работа [3,4 M], добавлен 19.06.2012

  • Проектирование базы данных учета посещаемости и среда разработки программного продукта. Работа с базами данных Access в Delphi: компоненты доступа к данным, создание отчетов в Delphi и запросов на языке SQL. Программа и эксплуатационная документация.

    дипломная работа [53,2 K], добавлен 16.07.2008

  • Borland Delphi 7 как универсальный инструмент разработки, применяемый во многих областях программирования, функции: добавление информации об абитуриентах в базу данных, формирование отчетов. Рассмотрение и характеристика основных компонентов Delphi.

    контрольная работа [3,6 M], добавлен 18.10.2012

  • Автоматизация работы пользователя по поиску, просмотру и редактированию информации о работниках, соискателях, вакансиях. Построение информационно-логической и физической моделей данных. Создание базы данных в СУБД MS SQL Server. Описание SQL запросов.

    курсовая работа [1,8 M], добавлен 07.08.2013

  • Изучение основных принципов разработки приложений баз данных в среде Delphi. Создание таблиц, псевдонима и вычисляемых полей базы данных. Особенности организации поиска и фильтрации. Сортировка данных в таблицах. Построение запросов. Генерация отчетов.

    курсовая работа [1,3 M], добавлен 05.02.2017

  • Рассмотрение особенностей среды программирования Delphi, анализ клиент-серверной версии. Знакомство с библиотекой визуальных компонентов. Основные функции интеллектуального редактора. Характеристика требований к базам данных. Функции программы "Магистр".

    дипломная работа [1,5 M], добавлен 10.03.2013

  • Характеристика и технические возможности СУБД MySQL. Трехуровневая структура MySQL. Требования к аппаратному обеспечению. Создание таблицы, триггеров, генераторов, хранимых процедур в MySQL. Разработка приложения для базы данных с помощью Borland Delphi.

    курсовая работа [940,7 K], добавлен 20.12.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.