Упражнения

1. Для форматирования и преобразования действительных чисел вместо функции FloatToStr() примените функцию Format(‘ %f ’,[пeременная]). Например, Format(‘%f ‘, [Delta]).

2. Теперь для форматирования и преобразования примените эту же функцию в таком виде Format(‘Строка %f’,[пeременная]). Например, Format(‘Вам надо похудеть %f[Delta]) .

3. Сделайте к программе заголовок, замените кнопку Button1 на кнопку BitBtn1, введите кнопку “Close”.

Контрольні питання:

1. Надайте визначення фреймам.

2. Надайте загальну характеристику компонентів-діалогів.

3. Охарактеризуйте діалоги відкриття та збереження файлів.

4. Охарактеризуйте компоненти фрагментів діалогів – DriveComboBox, DirectoryListBox.

5. Охарактеризуйте компоненти фрагментів діалогів – FilterComboBox, FileListBox та DirectoryOutLine.

6. Опишіть діалог вибору шрифта та його компонент FontDialog.

7. Охарактеризуйте діалогу вибору кольору та його компонент ColorDialog.

8. Охарактеризуйте діалог друку та встановлення друкуючого пристрою та надайте характеристику роботи компонентам – PrintDialog та PrinterSetupDialog.

9. Опишіть процедуру роботи діалогу пошуку тексту та його компонент FindDialog.

10. Охарактеризуйте роботу компонента ReplaceDialog – діалогу заміни текста.


АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ

ТЕМА 6.6: ОСНОВИ БАЗ ДАНИХ

 

Лекція №53 –Створення таблиць баз даних та форм прикладних застосувань

План заняття

1. Характеристика процедури створення таблиць баз даних

2. Характеристика процедури створення форм прикладних застосувань

 

Существует несколько путей для создания таблиц БД, напри­мер, программное создание с помощью метода CreateTableили посредством языка SQL. Но наиболее удобно использовать для этого программу Database Desktop, которая позволяет созда­вать и изменять таблицы БД, а также редактировать записи.

Рассмотрим последовательность создания БД с использовани­ем Database Desktop на основе небольшого примера. Пусть требу­ется создать БД, состоящую из одной таблицы, которая содержит сведения об автомобілях.

 

Прежде всего, необходимо создать на диске новый каталог, в котором будет размещаться новая БД (допустим, C:\BD). Обраще­ние к БД осуществляется с помощью так называемого псевдони­ма, поэтому с помощью программы BDE Administrator требуется создать псевдоним, который будет ссылаться на папку, где раз­мещается БД. После запуска программы выбирается пункт меню . Object | New. В появившемся окне нужно оставить без изменения тип БД (STANDARD) и нажать кнопку ОК. В левой части окна администратора БД появится строка с надписью STANDARD1. Ее необходимо изменить на желаемый псевдоним, например имя Auto. В правом поле требуется изменить параметр PATH, присво­ив ему нужное значение, определяющее путь к БД (в данном слу­чае C:\BD). Чтобы запомнить заданное имя псевдонима, следует щелкнуть на нем правой кнопкой мыши и в открывшемся меню выбрать пункт Apply. В результате на экране появится диалоговое окно, в котором нужно нажать кнопку ОК, тем самым подтверж­дая сохранение нового псевдонима. Окно администратора БД принимает примерно такой вид, как показано на рис. 13.2.

После того как определен псевдоним, вызывается программа Database Desktop и выбирается пункт главного меню File \ New \ Ta­ble. В открывшемся диалоговом окне следует оставить без изменения тип создаваемой таблицы Paradox 7 (либо выбрать другой требуемый тип, в зависимости от желания пользователя) и нажать кнопку ОК. После выполнения этой операции на экран будет выведено окно формирования структуры таблицы (см. рис. 13.3).

 

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

Fields Name - имя поля;

Туре - тип поля;

Size - размер поля (задается только для строковых типов);

Key - определяет, входит ли поле в первичный ключ. Если входит, то данный параметр содержит символ "*". Поля, включаемые в состав первичного ключа, должны обяза­тельно размещаться в самом начале таблицы.

В табл. 13.2 приведено описание типов полей, используемых в таблицах Paradox 7

 

 

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

Для рассматриваемого примера следует задать набор следую­щих полей:

Number(тип Alpha,длина 10) - номер машины (данное поле является первичным ключом, поскольку однозначно определяет конкретный автомобиль и представляет собой уникальное, неповторяющееся значение);

Саг(тип Alpha,длина 30) - марка автомобиля;

Year(тип Short)- год выпуска;

Owner(тип Alpha,длина 50) - фамилия, имя и отчество владельца.

В правом верхнем углу окна определения структуры БД раз­мещен комбинированный список Table Properties, который пред­назначен для установки дополнительных параметров. Этот список содержит такие пункты:

Validity Check- позволяет установить условие обяза­
тельного заполнения поля, интервал допустимых значе­
ний, значение по умолчанию и шаблон изображения поля;

Table Lookup - служит для задания полей поиска;

Secondary Indexes — используется для задания вторичного индекса;

Referential Integrity - применяется для установки ссылоч­ной целостности между таблицами;

Password Security - дает возможность задать пароль;

Table Language - служит для установки языка.

После описания всех полей таблицы и установки необходимых параметров созданную таблицу необходимо сохранить на диске в определенном ранее каталоге, для которого был создан псевдоним при помощи программы BDE Administrator. С этой целью нужно нажать кнопку Save as..., выбрать необходимую папку (в данном случае C:\BD) и задать желаемое имя таблицы (например cars.db)

При этом таблица будет записана на диск (изначально пустая), и автоматически будут созданы все необходимые файлы, имеющие общее имя и отличающиеся только своим расширением.

Для изменения структуры таблицы нужно вначале открыть ее, а затем обратиться к пункту меню Table | Restructure. Однако следует учесть, что если в данный момент времени таблица используется другим приложением, то изменение ее структуры будет невозможно.

Изменение имени таблицы следует также осуществлять с по­мощью Database Desktop, чтобы при этом автоматически про: изошло соответствующее изменение имен различных дополни­тельных файлов.

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

Для того чтобы сделать простейшее приложение, которое поз­волит работать с созданной таблицей, достаточно произвести ряд несложных операций.

Вначале на форму помещается компонент Table. Для него за­даются следующие свойства. Свойству Databaseприсваивается значение Auto,указывающее на определенный ранее псевдоним. Здесь необходимо заметить, что вместо псевдонима можно просто указывать каталог, где находится БД. Если же исполняемый файл приложения и БД располагаются в одной и той же папке, то мож­но оставить данное свойство равным пустой строке.

После этого свойству TableNameзадается требуемое имя табли­цы - в данной ситуации это cars. db.

На втором шаге на форму добавляется компонент DataSource, и его свойству DataSetустанавливается значение Tablel.

Наконец, на форме размещается компонент DBGrid и его свой­ству DataSourceприсваивается значение DataSourcel.

Теперь необходимо открыть таблицу БД cars.db для того, чтобы активизировать данные, содержащиеся в ней. Это достигается путем установки свойству Activeкомпонента Table значения True.

После выполнения всех описанных действий приложение го­тово к использованию, и остается только запустить его на выпол­нение. На экране отобразится содержимое таблицы БД в виде таб­лицы (см. рис. 13.4).

Пользователь имеет возможность просматривать содержимое таблицы БД, перемещаясь между записями с помощью стрелок на.

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

.

 

Контрольні питання

 

1. Опишіть процедуру створення таблиць баз даних

2. Опишіть процедуру створення форм прикладних застосувань


АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ

ТЕМА 6.6: ОСНОВИ БАЗ ДАНИХ

 

Лекція №56 –Відображаючі компоненти для роботи з базами даних

План заняття

1. Характеристика відображаючих компонентів при роботі з базами даних

2. Характеристика компоненту об’єкт поля та його властивостей

 

На этом занятии будут подробно рассмотрены некоторые ос­новные компоненты, которые используются в Delphi для работы с БД, а также важнейшие свойства и методы этих компонентов.

Объект поля. Прежде всего, рассмотрим объект поля Field,который имеет весьма важное значение. Класс TFieldпозволяет обращаться к отдельным полям таблицы БД. Любой набор данных (наборы данных Tableи Queryбудут рассматриваться ниже) содержит как минимум одно поле. По умолчанию доступны все поля набора данных. Однако могут быть ситуации, когда нет не­обходимости использовать все поля, в этом случае может быть задан некоторый ограниченный набор полей, доступных для ис­пользования. Это осуществляется с помощью специального ре­дактора полей, который позволяет на этапе конструирования при­ложения определять объекты-поля. Имена объектов поля форми­руются путем объединения имени набора данных и имени поля. Например, если в качестве набора данных используется таблица Tablelи у нее определен объект для поля Fam,то этот объект получит имя Tablel Fam.

Таким образом, к полю можно обращаться тремя эквивалент­ными способами ных. Этот компонент располагается на странице DataAccess Па­литры компонентов.

Данный компонент имеет всего четыре характерных специфи­ческих свойства.

Свойство DataSet (тип TDataSet) служит для указания на­бора данных, с которым связан источник данных. В свою очередь, визуальные компоненты связываются с источником данных через свое свойство DataSource.

Свойство State (тип TDataSetState) определяет текущее состояние, в котором находится набор данных.

Свойство AutoEdit (тип Boolean) определяет возможность редактирования набора данных пользователем через визуальные компоненты с использованием определенных, присущих этим ком­понентам действий для перевода их в режим модификации. По умол­чанию свойство AutoEdit имеет значение True, т.е. редактирова­ние записей разрешено. Если установить этому свойству значение False, то пользователю будет запрещено редактировать набор дан­ных, связанный с конкретным источником данных. Однако при этом возможным остается программное внесение изменений, а также пользователь может переводить набор данных в режим модификации нажатием соответствующих кнопок компонента DBNavigator.

Свойство Enabled (тип Boolean) определяет, будут ли визу­альные компоненты, связанные с конкретным источником дан­ных, отображать данные.

Кроме компонента DataSource, на странице DataAccess распо­ложен еще целый ряд компонентов, предназначенных для обеспе­чения доступа к данным.

Элементы страницы ADO Палитры компонентов позволяют взаимодействовать с информацией из базы данных с использова­нием объектов данных ActiveX.

Компоненты, расположенные на странице InterBase, дают воз­можность непосредственно соединяться с БД InterBase без ис­пользования процессоров BDE или ADO.

Страница Midas содержит компоненты, используемые для соз­дания удаленных БД.

Страница Decision Cube применяется для создания систем приня­тия решений и обеспечивает работу с многомерными данными.

На странице Rave находятся компоненты, применяемые для

создания отчетов.

Компоненты, представленные на страницах DataSnap, предна­значены для работы с многоярусными базами данных

На странице dbExpress располагаются компоненты, которые позволяют приложениям связываться с базами данных, исполь­зующими технологию dbExpress.

 

 

Контрольні питання

1. Навести огляд відображаючих компонентів при роботі з базами даних

2. Надати характеристику компоненту об’єкт поля та його властивостей

 


САМОСТІЙНА РОБОТА СТУДЕНТА

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ

ТЕМА 6.6: ОСНОВИ БАЗ ДАНИХ

 

Самостійне заняття №40 –Переміщення по набору даних

План заняття

1. Характеристика метода Ferst, Next, MoveBy, Last

2. Характеристика RecordCount, RecNo

 

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

Перед началом перемещения указателя набор данных автома­тически переводится в режим просмотра. Если при этом произво­дилось редактирование какой-либо записи, то все изменения ав­томатически запоминаются.

Ниже приводятся методы, которые используются для переме­щения указателя текущей записи по набору данных.

Метод Firstустанавливает курсор на первую запись.

Метод Nextперемещает курсор на следующую запись (если в текущий момент времени указатель установлен на последнюю запись, то перемещения не происходит).

Метод Last устанавливает указатель на последнюю запись. Метод Priorперемещает курсор на предыдущую запись (ес­ли указатель установлен на первую запись, перемещение не осу­ществляется).

Метод MoveBy (Distance: Integer): Integerпере­мещает указатель на число записей, задаваемое параметром Dis­tance. Положительное значение данного параметра определяет перемещение курсора вперед, а отрицательное - назад. При по­пытке переместить курсор на запись с номером, превышающим общее количество записей в таблице, он будет установлен на по­следнюю запись. Аналогично, курсор устанавливается на первую запись при попытке его перемещения на запись с номером, мень­шим единицы. Данная функция возвращает в качестве результата число записей, на которое сместился указатель.

Свойство RecordCountсодержит информацию об общем ко­личестве записей в наборе данных.

Свойство RecNoсодержит номер текущей записи, то есть опре­деляет текущее положение курсора.

Свойства BOFи EOFслужат для определения начала и конца на­бора данных соответственно. Свойство BOFимеет значение True,если указатель установлен на первую запись, иначе - False.В свою очередь, свойство EOF равно Trueтолько в том случае, если курсор указывает на последнюю запись набора данных.

При осуществлении операций перемещения по набору данных следует помнить одну особенность, которая может оказаться весьма немаловажной и способна привести к ошибкам, если ее не учесть. Дело в том, что порядок записей в наборе данных не является посто­янным - он изменяется в зависимости от текущего индекса, от при­меняемой фильтрации, от добавления и удаления записей. Таким образом, не исключено возникновение ситуации, когда в процессе последовательного перемещения по записям таблицы БД порядок их размещения изменяется, что может привести к результату, абсолют­но отличающемуся от ожидаемого. Разработчику приложения следу­ет учитывать такую возможность и не допускать подобных ошибок.

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

 

Контрольні питання

 

1. Надати характеристику метода Ferst, Next, MoveBy, Last

2. Надати характеристику RecordCount, RecNo

 


САМОСТІЙНА РОБОТА СТУДЕНТА

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ

ТЕМА 6.6: ОСНОВИ БАЗ ДАНИХ

 

Самостійне заняття №41 –Фільтрація

План заняття

1. Характеристика понять фільтрація та фільтр

2. Характеристика фільтрації по вираженню

3. Характеристика фільтрації по діапазону

 

 

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

В Delphi предусмотрены два возможных типа фильтрации за­писей. Фильтрация может выполняться по выражению или по диапазону. По умолчанию фильтры не установлены, то есть набор данных получает все записи таблицы.

Фильтрация по выражению осуществляется путем установки необходимого значения свойству Filter(тип String)компо­нента Table. Выражение фильтра представляет собой строку, ко­торая может включать имена полей таблицы, литералы (числа, строки или символы), операции сравнения, арифметические опе­рации, а также круглые и квадратные скобки. Имена переменных в выражении фильтра использовать нельзя. Для того чтобы вклю­чить в фильтр значение переменной, его следует предварительно преобразовать в строковый тип.

Несколько примеров того, как могут выглядеть выражения фильтров, приведены ниже:

1) Fam= 'Сидоров'(выбираются все записи, у которых поле Famимеет значение «Сидоров»);

2) Massa*Kolvo> 100(будут выбраны записи, для кото­рых произведение значения поля Massaна значение поля Kolvoбольше 100);

3) Date>= 03.05.87 and Date<= 03.05.97(отби­раются те записи, для которых значение даты, содержащейся в-поле Date,находится в промежутке от 03.05.87 до 03.05.97);.

4) Price <= 500 and Tovar <> 'Диван'(выбираются записи, у которых значение поля Price меньше или равно 500 и при этом значение поля Tovarне равно «Диван»).

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

В случае, когда задать условие фильтрации с помощью одного выражения нельзя, можно дополнительно использовать обработ­чик события OnFilterRecord.

Для того чтобы активизировать фильтр, необходимо свойству Filteredприсвоить значение True.По умолчанию данное свойство имеет значение False.При этом фильтрация не осуще­ствляется, а значение, содержащееся в свойстве Filter,игнори­руется.

Свойство FilterOptions(тип TFilterOptions)задает параметры фильтрации и представляет собой произвольную ком­бинацию таких двух значений:

■ Caselnsensitive- данная опция устанавливает, что регистр букв не будет учитываться при фильтрации, то есть большие и маленькие буквы не различаются. Например, ес­ли задано выражение фильтра Name='Иван'и установлен данный параметр, то будут отобраны записи, у которых со­держимое поля Nameравно «Иван», «иван», «ИВАН», «ИвАн» и т.д. Все эти значения воспринимаются как оди­наковые; ■ foNoPartialCompare- эта опция обеспечивает проверку на полное соответствие значения, задаваемого в выражении фильтра, и содержимого поля. Если данный параметр не ис­пользуется, то осуществляется проверка на частичное со­ответствие. Например, выражение фильтра имеет вид Name= 'Иван', тогда для него будут выбраны записи, у ко­торых поле Nameимеет значение 'Иванов', 'Иван', 'Иванчен­ко', 'Иванчихин' и т.д. Если же данный параметр установлен, то будут отобраны только записи, для которых значение поля Nameравно непосредственно «Иван*». При фильтрации по выражению последовательно просматри­ваются все записи таблицы. Поэтому, если таблица имеет боль­шой объем либо код обработчика события OnFilterRecordслишком длинный, то наложение фильтра может вызывать опре­деленное замедление работы приложения.

Фильтрация по диапазону означает, что из таблицы будут вы­бираться только те записи, для которых значение указанного поля попадает в заданный диапазон. Этот способ фильтрации можно применять только для индексированных полей (причем индекс поля, по которому осуществляется фильтрация, должен быть ус­тановлен как текущий). В связи с использованием индексно-последовательного метода доступа, фильтрация по диапазону производится быстрее, чем фильтрация по выражению. Данный способ применим только для компонента Table.

Для включения фильтрации по диапазону используется метод ApplyRange, а для ее отключения - метод CancelRange.Пред­варительно для индексного поля, по которому выполняется фильтрация, устанавливается диапазон допустимых значений. Для этого используются методы SetRangeStartи SetRangeEnd,определяющие, соответственно, нижнюю и верхнюю границы диапазона. Эти методы переводят набор данных в режим dsSetKey,после чего с помощью оператора присваивания зада­ются необходимые значения границ диапазона.

Изменение границ диапазона выполняется при помощи мето­дов EditRangeStartи EditRangeEnd,действие которых аналогично действию методов SetRangeStartи SetRange­End.

Свойство KeyExclusive(тип Boolean)определяет, будут ли включены граничные значения в диапазон при его установке. Если данное свойство имеет значение False(по умолчанию), то граница включается в диапазон, если же свойству присвоено зна­чение True,то граница не входит в диапазон. Свойство KeyExclusiveзадается отдельно для верхней и нижней грани­цы сразу* же после вызова методов SetRangeStartи SetRangeEnd.

Для диапазона может быть установлена только одна граница. Если определена только нижняя граница диапазона, то будут вы­браны все записи, у которых фильтруемое поле имеет значение большее, чем граничное. Если же задана только верхняя граница, то отбираются записи, для которых значение фильтруемого поля меньше этого граничного значения.

Существует возможность установки фильтра по нескольким полям. В этом случае используется несколько операторов при­сваивания (для каждого фильтруемого поля), а предварительно должен быть создан индекс по этим полям и установлен в качест­ве текущего.

Пример фильтрации по диапазону показан ниже.

В результате выполнения данного кода будут отобраны все за­писи, для которых значение поля Rostнаходится в диапазоне от 150 до 170, а значение поля Ves- от 45 до 65.

Метод SetRangeтакже позволяет осуществлять фильтрацию по диапазону. Этот метод имеет следующий синтаксис:

SetRange (const StartValues, EndValues: array of const.

Этот метод позволяет сразу задать границы диапазона и одно­временно произвести фильтрацию. Параметры представляют со­бой массив констант и содержат, соответственно, значения верх­ней и нижней границ диапазона. В том случае, когда фильтрация производится по нескольким полям, значения границ перечисля­ются через запятую. Поля, по которым осуществляется фильтра­ция, определяются в соответствии с текущим индексом.

Например, установка фильтра, который Позволяет осуществить описанную выше фильтрацию с помощью метода SetRange,вы­глядит следующим образом:

Tablel.SetRange([150, 45], [170, 65]);

При этом следует помнить, что предварительно обязательно должен быть установлен текущий индекс, построенный по полям

Rostи Ves.

Рассмотрим еще один характерный пример. Пусть требуется выбрать из таблицы всех владельцев автомобиля ВАЗ-2107, фа­милия которых начинается с буквы «Р». Задать фильтр для выбора таких записей можно следующим образом.

 

 

При выборе фамилий в качестве нижней границы задается «Р», а для установки верхней границы выбора фамилии к символу «Р» добавлена строка «яяя». Фамилии будут выбираться следующим образом. В соответствии с нижней границей будут отобраны все строки, у которых код первой буквы больше кода буквы «Р», т.е. фамилии, начинающиеся с букв Р, С, Т, У, Ф и т.д. Затем из полу­ченного множества значений выбираются те строки, коды первых символов которой меньше кодов букв строки «Ряяя», т.е. фами­лии, начинающиеся с букв «Ра...», «Рб...» и т.д., вплоть до «Ря-яю...» (где многоточие означает строку любой длины, состоящую из любых символов). Таким образом, длина фамилии не имеет значения, а выборка осуществляется только по соответствию пер­вых символов строки установленным границам. Другими словами, производится обычный отбор в алфавитном порядке, когда, на­пример, фамилия Рябко стоит в списке ниже, чем Решетников. Поскольку код буквы «я» больше, чем коды других букв, то в ре­зультате в набор данных будут включены все записи, поле Famкоторых содержит значение, начинающееся с буквы «Р». Вероят­ность же того, что при осмысленном заполнении таблицы найдут­ся записи, содержащие поля, которые включают подстроку «яяя», бесконечно близка к нулю.

Метод CancelRangeпозволяет отменить фильтрацию, вы­полняемую с помощью методов ApplyRangeили SetRange.

Кроме описанных способов фильтрации, существует также воз­можность навигации в неотфильтрованном наборе данных между записями, удовлетворяющими фильтру. Для этого служат методы FindFirst, FindLast, FindNextи FindPrior.Они обеспе­чивают, соответственно, поиск первой, последней, следующей и предыдущей записей, которые удовлетворяют критериям фильтра­ции, заданным в обработчике события OnFilterRecordили свойством Filter.При этом сам набор данных находится в неот­фильтрованном состоянии, то есть метод Filteredимеет значе­ние False.Действие перечисленных методов заключается в сле­дующем: они кратковременно переводят набор данных в отфильт­рованное состояние (Filtered=True)без визуализации этой фильтрации в DBGridили другом подобном визуальном компо­ненте, находят соответствующую запись, устанавливают на. нее курсор и снова переводят набор данных в неотфильтрованное со­стояние (Filtered=False).Если искомая запись найдена, то методы возвращают значение True,в противном случае - False.

 

 

Контрольні питання

 

1. Надати характеристику поняттям фільтрація та фільтр

2. Надати характеристику фільтрації по вираженню

3. Надати характеристику фільтрації по діапазону


САМОСТІЙНА РОБОТА СТУДЕНТА

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ

ТЕМА 6.6: ОСНОВИ БАЗ ДАНИХ

Самостійне заняття №42 –Модифікація набору даних

План заняття

1. Характеристика методів, які дозволяють програмно додавати, видаляти та редагувати записи набору даних

2. Характеристика компоненту Table

 

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

О возможностях визуального изменения набора данных при работе с такими компонентами, как DBGrid, говорилось выше. В главе 13 было рассказано, как пользователь может вручную до­бавить, удалить или отредактировать записи набора данных, ис­пользуя для этих целей визуальные компоненты. Для выполнения подобных операций в качестве вспомогательного компонента мо­жет также использоваться навигатор DBNavigator.

Чтобы набор данных можно было изменять программным об­разом, он должен быть модифицируем. Это определяется значени­ем соответствующих свойств наборов данных.

Для компонента Table возможность модификации задается присвоением свойству Readonlyзначения False(по умолча­нию). Если данное свойство равно True,то любые изменения таблицы (как визуальные, так и программные) будут запрещены. Изменить значение этого свойства можно только при условии, что набор данных не активен в текущий момент времени. Другими словами, перед изменением свойства Readonlyнабор данных должен быть закрыт.

Свойство CanModify (Boolean)используется для того, что­бы в ходе выполнения приложения проверить, можно ли модифи­цировать набор данных. Это свойство доступно только для чте­ния. Если оно имеет значение True,то набор данных можно мо­дифицировать, в противном случае - модификация запрещена.

Существует также возможность запретить автоматический пе­реход в режим редактирования набора данных при работе пользо­вателя с визуальными компонентами, такими, как DBGrid или DBEdit. Для этого необходимо установить значение Falseсвой­ству AutoEdit(тип Boolean)источника данных DataSource.

Метод Editслужит для перевода набора данных в режим ре­дактирования.

Метод Postзаписывает изменения, внесенные пользователем при редактировании. Данный метод автоматически вызывается при перемещении указателя текущей записи, например, с помощью ис­пользования методов First, Last, Next, Priorили MoveBy.

Метод Cancelпозволяет отменить изменения, сделанные при редактировании до того момента, пока они не были сохранены с

помощью метода Post.

Метод SetFields (const Values: array of const)

используется для изменения значений всех или некоторых полей текущей записи. Параметр Valuesпредставляет собой массив зна­чений, которые присваиваются полям текущей записи. Порядок заданных значений соответствует порядку полей в наборе данных.. Если количество значений, заданных параметром Values,меньше числа полей набора данных, то эти значения присваиваются первым полям, а остальные поля не изменяются. Если же количество задан­ных значений превышает число полей, то при выполнении данного метода будет сгенерирована исключительная ситуация. Чтобы не изменять значение какого-либо поля, ему необходимо присвоить значение nil.В этом случае прежнее значение поля будет сохра­нено без изменения. Следует различать значения nilи Null.Если вместо nilбудет указано Null,то поле будет изменено и получит значение Null.Редактирование записи с помощью данного метода может выглядеть примерно так: Tablel.Edit;

Tablel.SetFields('0284', 'Порошок стиральный', nil, 500);

При выполнении вышеприведенного кода первому полю записи присваивается значение «0284», второму полю - «Порошок стираль­ный», третье поле не изменяется, а четвертое получает значение 500.

После выполнения метода SetFieldsнабор данных автома­тически переводится в режим просмотра.

Добавление записей имеет много общего с редактированием. Прежде всего, добавление новой записи может осуществляться только в 'том случае, если разрешена модификация набора данных. Подтверждение или отмена произведенных добавлений осуществ­ляется путем применения методов Postили Cancelсоответст­венно.

Ниже приводятся методы, позволяющие добавить новую за­пись к набору данных.

Метод Insertпереводит набор данных в режим вставки и добавляет пустую запись в позицию, на которой находится указа­тель текущей записи. После вызова данного метода необходимо заполнить поля новой записи. Это осуществляется с помощью метода SetFields.Для сохранения сделанных изменений вызы­вается метод Post.

Метод InsertRecord (const Values: array of const)вставляет новую запись в текущую позицию курсора и одновременно задает значения всех или некоторых ее полей.

Методы Appendи AppendRecordабсолютно аналогичны методам Insertи InsertRecordсоответственно. Единствен­ным отличием является то, что оба эти метода добавляют новую запись в конец набора данных, а не в позицию, на которую указы­вает курсор.

Метод Deleteпозволяет удалить текущую запись из набора данных. Этот метод применим только к модифицируемым набо­рам данных.

Использование некоторых из вышеприведенных методов будет продемонстрировано на следующем примере.

Пример 14.2. Пусть необходимо создать приложение, которое позволяло бы производить программную модификацию таблицы БД, содержащей некую справочную информацию о различных животных.

Для решения поставленной задачи, прежде всего, с помощью Database Desktop создается таблица, включающая такие поля: На­звание животного (Animal),Масса (Weight),Длина тела (Length).

На втором шаге создается главная форма приложения, на ко­торой размещаются соответствующие элементы управления (см. рис. 14.4).

 

 

Как видно из рис. 14.4, в верхней части формы расположен компо­нент DBGrid, в котором отображается содержимое таблицы БД. Ниже размещены три однострочных редактора Edit, в которые пользователь имеет возможность вводить новую информацию. Внизу формы нахо­дятся четыре кнопки. Кнопка Добавить обеспечивает добавление со­держимого однострочных редакторов в таблицу anim.db.При этом обязательным условием является то, что должны быть введены все данные, а длину и массу тела животного необходимо задавать в число­вом выражении. Если пользователь пытается добавить в список новую запись, а там уже имеются данные о таком животном, то выдается со­ответствующее сообщение и запись не добавляется.

Следует обратить внимание на то, что запись добавляется в конец таблицы с целью иллюстрации использования метода Ар-pendRecord.Специально для того чтобы увидеть результат дан­ного действия, индексирование в данной таблице не используется, и первичный ключ не задается, ибо в противном случае записи будут упорядочены и любая добавляемая запись будет тут же. ото­бражаться в таблице в соответствии с порядком индексирования (следовательно, тот факт, что запись добавляется в конец табли­цы, был бы вовсе не очевиден). Если же не задавать первичный ключ и не производить индексирование, то можно будет явным образом увидеть, что метод AppendRecordдобавляет запись в конец таблицы.

Кнопка Вставить обеспечивает вставку новой записи в теку­щую позицию указателя в таблице. Это позволяет проиллюстри­ровать использование метода InsertRecordи наглядно пока­зать его отличие от метода AppendRecord.Увидеть это разли­чие также возможно только в том случае, если в таблице не применяется индексирование записей. Если же используется ка­кой-либо индекс, то для пользователя не будет заметна разница между использованием этих двух методов.

С помощью кнопки Изменить можно изменить текущую за­пись в соответствии с данными, содержащимися в полях редакто­ров Edit. На изменение данных накладываются те же ограничения, что и на добавление, кроме одного исключения. Изменение про­изводится только для текущей записи. При этом значение, запи­санное в поле редактора Editl(название животного), не учи­тывается, а просто производится изменение полей Weightи Lengthдля той записи, на которую в текущий момент времени установлен указатель.

Кнопка Удалить позволяет удалить текущую запись.

Программную реализацию решения поставленной задачи мож­но видеть в листинге 14.1.

 

 

 

 

 

 

 

Данная программа не имеет большой практической ценности и носит иллюстративный характер с целью демонстрации использо­вания некоторых методов, позволяющих модифицировать набор данных.

 

Контрольні питання

1. Надати характеристику методів, які дозволяють програмно додавати, видаляти та редагувати записи набору даних

2. Охарактеризувати компонент Table

АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ

ТЕМА 6.6:ОСНОВИ БАЗ ДАНИХ

 

Лекція №57 –Робота із зв’язаними таблицями

План заняття

1. Характеристика поняття зв’язана таблиця

2. Характеристика властивостей зв’язаних таблиць

 

В Delphi существует возможность создавать приложения, обеспечивающие работу с двумя взаимосвязанными таблицами, одна из которых является главной, а другая подчиненной. При этом в подчиненной таблице в каждый момент времени отобра­жаются только те записи, которые соответствуют текущей записи главной таблицы. Наиболее распространенным типом связи двух таблиц является связь один-ко-многим, то есть когда одной записи главной таблицы могут соответствовать несколько записей под­чиненной. Кроме этого существует также связь один-к-одному и многие-ко-многим, однако эти типы связи используются относи­тельно редко.

Нижеперечисленные свойства подчиненной таблицы исполь­зуются для установки связи между двумя таблицами.

Свойство MasterSource (тип TDataSource) содержит ссылку на источник данных, связанный с главной таблицей. Та­ким образом, это свойство служит для выбора главной таблицы и обеспечивает ее связь с используемой таблицей, которая выступа­ет в роли подчиненной.

Свойство MasterFields (тип String) задает список полей, в соответствии со значениями которых будет осуществляться связь между двумя таблицами. При вызове данного свойства через Инспектор объектов вызывается диалоговое окно Field Link De­signer, в пределах которого устанавливается связь между полями главной и подчиненной таблицы (см. рис. 14.5).

Как видно из рис. 14.5, в верхней части представленного диа­логового окна расположен разворачивающийся список Available Indexes, позволяющий выбрать необходимый индекс подчиненной таблицы, на основе которого будет формироваться связь с главной таблицей. Ниже в диалоговом окне расположены два списка: сле­ва - поля, входящие в выбранный индекс подчиненной таблицы Detail Fields; справа - поля главной таблицы Master Fields. Проек­тировщик приложения выбирает одно поле в левом списке и одно в правом, а затем нажимает кнопку Add, размещенную в центре окна. Результат, отражающий связь между полями двух таблиц, помещается в список Joined Fields, расположенный в нижней час­ти диалогового окна.

Результатом установления такой связи будет отображение в подчиненной таблице только тех полей, значения которых совпа­дают со значением связанного поля текущей записи главной табли­цы. Например, если связь между двумя таблицами установлена по полям, содержащим фамилию, имя и отчество студентов (Name -для главной таблицы, Fio - для подчиненной таблицы), и при этом поле Name текущей записи главной таблицы в настоящий момент времени содержит значение «Васильев В.А.», то в подчиненной таблице будут отображаться только те записи, у которых поле Fio имеет значение «Васильев В.А.».

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

более таблицами.

Транзакции. В данном разделе представляется целесообразным упомянуть о таком понятии, как "транзакция". Под транзакцией понимается некое комплексное воздействие на БД, переводящее ее из одного целостного состояния в другое. Воздействие заклю­чается в изменении данных в таблицах БД.

Механизм транзакции обеспечивает сохранение смысловой целостности и достоверности информации, содержащейся в таб­лицах БД. Данный механизм, как правило, используется при рабо­те с несколькими таблицами. Суть его состоит в том, что, если одно из изменений, вносимых в БД в рамках транзакции, завершается неуспешно, должен быть произведен возврат (так называе­мый откат) к состоянию БД, имевшему место до начала транзак­ции. Таким образом, либо одновременно подтверждаются все вне­сенные в БД изменения, либо не подтверждается ни одно из них.

Поясним на примере, о чем идет речь. Допустим, в магазине имеется БД, в которую входят три таблицы, хранящие информа­цию о продаже товаров. В первой таблице Prodaga.db содер­жится подробная информация по каждой продаже, такая, как дата продажи, количество проданных единиц товара, номер накладной и т.п. Вторая таблица Tovars. db содержит сведения о продаже каждого товара за некоторый период времени, например за теку­щий год. В третьей таблице Clients. db хранится информация о продаже товаров каждому покупателю за тот же период времени.

Транзакция, связанная с продажей того или иного товара, бу­дет состоять из такого набора операций:

1) добавление записи в таблицу Prodaga. db;

2)поиск (или добавление) в таблице Tovars. db записи, со­ответствующей проданному товару, и увеличение общего объема продаж товара данного вида;

3)поиск (добавление) в таблице Clients. db записи, отно­сящейся к сделавшему покупку покупателю и увеличение общей суммы совершенных им покупок.

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

Для реализации механизма транзакций необходимо.воспользо-ваться следующими методами компонента Database.

Метод StartTransaction начинает транзакцию. Сразу вслед за данным методом в программе должны располагаться операторы, составляющие транзакцию. При выполнении операций должна производиться обработка возникающих исключительных ситуаций для выявления ошибок и отката транзакции в случае необходимости.

Метод Commitутверждает транзакцию в случае, если не воз­никло никаких исключительных ситуаций. Результатом выполне­ния данного метода является вступление в силу всех внесенных

изменений.

Метод Rollbackпри возникновении исключительных ситуа­ций производит отмену данной транзакции и действий всех опе­раций в ее рамках (откат транзакции).

В самом общем виде программная реализация механизма тран­закции будет выглядеть следующим образом:

// Начало транзакции Databasel.StartTransaction; try

{Составляющие транзакцию операции по изменению таблиц БД}

// Операции выполнены успешно.

// Утверждение транзакции

Databasel.Commit;

except

// Возникла исключительная ситуация.

// Откат транзакции

Databasel.Rollback;

end;

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

Контрольні питання

1. Надати характеристику поняття зв’язана таблиця

2. Розглянути властивості зв’язаних таблиць

АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ. ВІЗУАЛЬНІ КОМПОНЕНТИ. БАЗИ ДАНИХ

ТЕМА 6.7: НАВІГАЦІЯ ПО НАБОРУ ДАНИХ. МОВА SQL. СТВОРЕННЯ ДОВІДКОВОЇ СИСТЕМИ

Лекція №58 –Робота з таблицями та індексами

План заняття

1. Характеристика поняття таблиця

2. Характеристика поняття індекс

 

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

Метод CreateTableслужит для динамического создания новой таблицы БД. Перед вызовом данного метода требуется оп­ределить структуру таблицы (т.е. описать все ее поля), задать рас­положение БД, имя и тип таблицы, а также определить индексы при необходимости. Это осуществляется путем установки соот­ветствующих свойств.

Свойство DatabaseNameзадает имя базы данных, которое, собственно говоря, прямо или косвенно указывает место распо­ложения БД на диске. Этому свойству можно прямо задать путь к каталогу, где содержится БД, либо указать имя заранее опреде­ленного псевдонима, либо установить в качестве значения свойст­ва пустую строку, в том случае, если БД располагается в том же каталоге, что и исполнимый файл приложения.

Имя файла, содержащего таблицу БД, задается с помощью свойства TableName.

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

ttDef ault- тип таблицы определяется на основе расши­рения имени файла таблицы (если расширение отсутствует, то принимается формат Paradox);

ttParadox -тип Paradox;

ttDBase -тип dBASE;

ttFoxPro -тип FoxPro;

ttASCII -тип ASCII(обычный текст, разбитый на ко­лонки).

Свойство FieldDef sзадает список полей таблицы при ее соз­дании с помощью метода CreateTable,перед вызовом которого должно быть определено хотя бы одно поле новой таблицы. Прежде всего, содержимое свойства FieldDefsдолжно быть удалено с помощью метода Clear,так как в нем может содержаться информа­ция о полях другой таблицы, с которой ранее был связан набор дан­ных. Затем осуществляется добавление новых полей в список. Для этого используется метод Add,который имеет такой синтаксис:

Add (const Name: String; DataType: TFieldType; Size:Word;Required: Boolean).

Здесь параметр Nameзадает имя поля, параметр DataType-тип поля, параметр Size- размер поля, а параметр Requiredопределяет, должно ли поле содержать некоторое значение или может оставаться пустым.

Для определения индексов используется свойство IndexDef s.По аналогии со свойством FieldDef s,содержимое свойства IndexDefsтакже изначально удаляется с помощью метода Clear,а затем с помощью метода Addlndexв список добавляются новые индексы. Для удаления индексов используется метод Deletelndex.Следует иметь в виду, что в случае опреде­ления индексов после создания таблицы необходимо установить текущий индекс, обновив значения свойств IndexNameили IndexFieldNames,поскольку они могут указывать на индекс предыдущей таблицы, с которой ранее был связан набор данных.

Нижеприведенный листинг содержит фрагмент программного кода, который показывает пример создания новой таблицы БД.

// Закрытие набора данных

Tablel.Active:= False; // Установка параметров таблицы Tablel.DatabaseNarae:= 'NewBD'; Tablel.TableName:= 'TableNew'; Tablel.TableType:= ttParadox; // Определение полей таблицы Tablel.FieldDefs.Clear; Tablel.FieldDefs.Add('Tab_no_true); Tablel.FieldDefs.Add('Fio', ftString, 50, true); Tablel.FieldDefs.Add('Position' ,ftString, 30, false);

Tablel.FieldDefs.Add('Salary', ftCurrency, 0, false);

// Описание индексов

Tablel.IndexDefs.Clear; Tablel.IndexDefs.Add(Tab_no', [ixPrimary, ixUnigue]);

Tablel.IndexDefs.Add('indS', 'Salary',[ixDescending]);

// Создание таблицы Tablel.CreateTable;

// Задание текущего индекса

Table1.IndexName:= >indS';

//Активизация (открытие) набора данных,

// связанного с созданной таблицей

Tablel.Active:=,True;

В результате выполнения данного кода в каталоге, определяемом псевдонимом NewBD,будет создана таблица типа Paradoxс име­нем TableNew,представляющая собой список сотрудников фирмы. Таблица будет содержать четыре поля: Tabjno(табельный номер сотрудника), Fio(фамилия, имя, отчество сотрудника), Position(должность) и Salary(заработная плата). Для таблицы установлены два индекса: первый представляет собой первичный ключ (индексит рование производится по табельному номеру сотрудника), а второй называется indSи обеспечивает индексирование по убыванию раз­мера заработной платы (Salary).После создания таблицы в качест­ве текущего выбирается именно второй индекс indS.

Метод DeleteTableпозволяет удалить таблицу БД в про­цессе выполнения приложения. При вызове данного метода про­исходит удаление с диска всех файлов, связанных с таблицей БД, имя и расположение которой определяется значением свойств TableNameи DatabaseNameсоответственно. Набор данных следует закрыть перед удалением таблицы.

МетодRenameTable (const NewTableName: String)ис­пользуется для переименования таблицы БД. Параметр New­TableNameзадает новое название таблицы.

 

Контрольні питання

1. Надати характеристику поняття таблиця

2. Надати характеристику поняття індекс


АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ. ВІЗУАЛЬНІ КОМПОНЕНТИ. БАЗИ ДАНИХ

ТЕМА 6.7: НАВІГАЦІЯ ПО НАБОРУ ДАНИХ. МОВА SQL. СТВОРЕННЯ ДОВІДКОВОЇ СИСТЕМИ

ОБОВ’ЯЗКОВА КОНТРОЛЬНА РОБОТА №63

Контрольна робота по темі: «Створення консольних прикладних застосувань

1. Охарактеризуйте тип змінних типу integer і real.

2. Охарактеризуйте ключові слова end і type.

3. Охарактеризуйте ключове слово const.

4. Охарактеризуйте директиву $ APPTYPE.

5. Написати додаток для консолі з висновком значення типу string. Ввести 20 символів ABОCDENGAQUTOLBNDLOP і т.д. вивести 11 символ даної послідовності. Використовувати змінну k типу string.

6. Написати додаток для консолі з висновком значення типу char. Ввести символ P типу char. При вирішенні задачі використовувати змінну е.

7. Написати додаток для консолі з обчисленням пройденого шляху двома мандрівниками, якщо відомо, що перший витратив на шлях від пункту А в пункт В 0.57 години, а другий 0.73 години. Також відомо, що перший йшов зі швидкістю 3.7 км / год, а другий 4.2 км / год. Визначте який мандрівник пройшов більшу відстань. При обчисленні задачі використовувати змінні типу real, s - шлях, t - витрачений час, v - швидкість пересування. Всі оператори оформляти із вводом пояснюючих зазначень.

8. Дано 2 числа, вивести більше з них. Всі оператори оформляти із вводом пояснюючих зазначень. Використовувати змінні s1 і s2 як змінні цілого типу. S1 ввести як рівне 34, а S2 ввести як рівне 76.

9. Дано ціле число. Додати до нього 1 і відняти від нього 2; якщо число стало більше 15, то вивести отримане число, якщо число стало менше вивести «результат менше 15». Використовувати змінні s1 і y - як змінні цілого типу. S1 ввести як рівне 111. Всі оператори оформляти із вводом пояснюючих зазначень.

10. Дано два числа. Вивести спочатку більше, а потім менше з них. Всі оператори оформляти із вводом пояснюючих зазначень. Використовувати змінні s1 і s2 як змінні типу цілі числа. S1 ввести 289, число s2 ввести 754.

11. Написати програму, яка обчислює суму перших n цілих позитивних чисел. Кількість суммуємих чисел повинно вводитися під час роботи програми. Вихідні дані використовувати змінну k - цілого типу. Всі оператори оформляти із вводом пояснюючих зазначень.

12. Написати програму, яка виводить таблицю ступенів двійки від 0 до 10. Всі оператори оформляти із вводом пояснюючих зазначень. При вирішенні задачі використовувати наступні змінні t - показник ступеня; x - значення x в ступені n.

 


АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ

ТЕМА 6.7: НАВІГАЦІЯ ПО НАБОРУ ДАНИХ. МОВА SQL. СТВОРЕННЯ ДОВІДКОВОЇ СИСТЕМИ

 

Лекція №59 –Звіти

План заняття

1. Поняття звіту

2. Характеристика сторінки QReport

 

Отчетом называется печатный документ, в котором содер­жится информация, полученная из некоторого набора данных. Существуют разные возможности создания отчетов, например, публикация данных в виде документа Word или в виде электрон­ной таблицы Excel, но все же более часто для этой цели исполь­зуются специализированные компоненты. В предыдущих версиях Delphi для построения отчетов применяется генератор отчетов QuickReport, отдельные компоненты которого располагались на странице QReport Палитры компонентов. В Delphi 7 на смену ему пришел новый генератор отчетов - Rave Reports. Компоненты для взаимодействия между наборами данных и генератором отчетов представлены на странице Rave Палитры компонентов, а непо­средственно проектирование отчетов ведется с помощью специа­лизированного визуального дизайнера отчетов Rave Visual De­signer, который был разработан компанией Nevrona Designes.

Rave Reports используется в приложениях для генерации отче­тов, составленных на основе информации, получаемой из базы данных. Это инструментальное средство позволяет создавать тек­стовые отчеты, а также отчеты в формате PDF, HTML и RTF, в том числе с использованием графики и различных шрифтов. Про­демонстрировать работу Rave Reports легче всего на небольшом примере, который показывает, как добавить простой отчет к су­ществующему приложению базы данных.

Пример 14.3. Пусть необходимо создать программу, которая бы генерировала простейший отчет из таблицы БД anim.db(см. пример 14.2).

Решение. Рассмотрим последовательность шагов, которые не­обходимо сделать для решения поставленной задачи.

1. Вначале нужно создать в Delphi новое приложение и помес­тить на форму компонент Table, который связать с таблицей БД anim.dbпутем задания соответствующих значений свойствам DatabaseNameи TableName.

2.Затем следует перейти к странице Rave Палитры компонентов, отыскать там компонент RvDataSetConnection '">£"'< и доба­вить его на форму.

3. После этого в Инспекторе объектов для данного компонента необходимо установить в свойстве DataSetссылку на компонент набора данных Table, который уже определен в приложении.

4.Далее, используя визуальный дизайнер Rave Visual Designer для разработки отчета, надо создать проектный файл отчета (RAV-файл). Это, в свою очередь, требует выполнения следую­щей последовательности действий:

 

■ выбрать в Delphi пункт меню Tools \ Rave Designer для вы­зова Rave Visual Designer, выбрать в Rave Visual Designer пункт меню File | New Data Object для отображения диалогового окна Data Connections;

в списке Data Object Type выбрать Direct Data View и на­жать кнопку Next;

■ списке Active Data Connections выбрать RVDataSetCon-nectionlи нажать кнопку Finish, после чего в левой час­ти окна дизайнера отчетов Rave Visual Designer будут пока­заны свойства компонента DataViewl;

■ выбрать пункт меню Tools | Report Wizards \ Simple Table для отображения мастера отчетов Simple Table;

■ выбрать Data Viewl и нажать кнопку Next;

■ выбрать несколько полей, которые нужно отобразить в от­чете, и нажать кнопку Next;

■ следуя указаниям на последующих страницах мастера, уста­новить порядок отображения полей, границы, текст заголовка и шрифты, которые будут использоваться в отчете;

■ на последней странице мастера нажать кнопку Generate для завершения его работы с последующим отображением от­чета в дизайнере страниц Page Designer, расположенном в правой части окна;

выбрать пункт меню File \ Save для вывода на экран диало­гового окна Save As, после чего перейти в каталог, в кото­ром будет расположено создаваемое приложение Delphi, и сохранить файл проекта Rave, как Project! .rav. В окончательном виде окно Rave Visual Designer будет;

выглядеть, как показано на рис. 14.6.

5.Затем следует выбрать на странице Rave компонент RavefiV проекта RvProject . И добавить его на форму.

6.После этого в Инспекторе объектов нужно установить в свойстве ProjectFileссылку на файл проекта отчета (Рго-jectl.rav), который был создан на предыдущем шаге.

Далее необходимо поместить на форму кнопку Button. В ре­зультате выполнения всех вышеперечисленных действий форма на этапе проектирования принимает такой вид, как показано на рис. 14.7.

8.Теперь следует дважды щелкнуть мышью по кнопке Buttonl, в результате чего будет создан обработчик события OnClick.

9.Затем надо написать обработчик событи








Дата добавления: 2014-12-01; просмотров: 1315;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.275 сек.