Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (960530), страница 89
Текст из файла (страница 89)
рис. 11.19).ИзменениеструктурытаблицыСтруктуру существующей таблицы можно изменить, выполнив командупосле предварительного выбора таблицы в окне программы Database Desktop. В результате открывается окно определения структурытаблицы, и дальнейшие действия не отличаются от действий, выполняемыхпри создании таблицы.Table\RestructureЧасть 3. Современные СУБД и их применение420При изменении структуры таблицы с ней не должны работать другие приложения, в том числе С++ Builder.
Поэтому предварительно необходимо закрыть С++ Builder или приложение, в котором компоненты T a b l e связаны сперестраиваемой таблицей. Другим вариантом является отключение активности компонентов T a b l e , связанных с перестраиваемой таблицей, для чегосвойству A c t i v e этих компонентов через Инспектор объектов устанавливаетс я з н а ч е н и е false.Переименование таблицы следует выполнять из среды программы DatabaseDesktop, а не из среды Windows, например, с помощью Проводника. Для этого при работе со структурой таблицы можно нажать кнопку S a v e a s и задатьновое имя таблицы.
В результате в указанном каталоге диска появятся всенеобходимые файлы таблицы. При этом старая таблица также сохраняется.Информация о названии таблицы используется внутри ее файлов, поэтомупростое переименование всех файлов таблицы приведет к ошибке при попытке доступа к ней.Если необходимо просто ознакомиться со структурой таблицы, то выполняется команда T a b l e \ l n f o S t r u c t u r e . В результате появляется окно определения структуры таблицы, но элементы, с помощью которых в структуру таблицы могут быть внесены изменения, заблокированы.
Просмотр структурывозможен также для таблицы, с которой связаны другие приложения.1 1 . 8 . Создание п р и л о ж е н и я BDEДля примера рассмотрим создание приложения, использующего механизмдоступа BDE и позволяющего перемещаться по записям таблицы БД, просматривать и редактировать поля, удалять записи из таблицы, а также вставлять новые. Файл проекта приложения обычно не требует от разработчикавыполнения каких-либо действий.
Поэтому при создании приложения главной задачей является конструирование форм, в простейшем случае — однойформы.Вид формы приложения на этапе проектирования показан на рис. 11.21,где в форме размещены компоненты T a b l e l , D a t a S o u r c e l , D B G r i d l иDBNavigatorl.Компонент T a b l e 1 обеспечивает взаимодействие с таблицей БД. Для связи с требуемой таблицей нужно установить в соответствующие значения свойство D a t a B a s e N a m e , указывающее путь к БД, и свойство T a b l e N a m e , указывающее имя таблицы.
После задания таблицы для открытия набора данныхсвойству A c t i v e должно быть установлено значение t r u e .Свойству A c t i v e нужно устанавливать значение true после задания таблицы БД, т. е. после установки нужных значений свойств D a t a B a s e N a m e иTableName./ I. Borland С++ Builder421I (\П, Form2NAME[Angel Fishr" i 'WEIGHTSIZE|1 " I2м1шщ==2'A js• I• **Шj 4Ч | с jРис. 11.21. Форма приложения для работы с БДИмя таблицы лучше выбирать в раскрывающемся списке в поле значениясвойства T a b l e N a m e . Если путь к БД (свойство D a t a B a s e N a m e ) задан правильно, то в этом списке отображаются главные файлы всех доступных таблиц.В рассматриваемом приложении использована таблица животных, входящая в состав поставляемых с С++ Builder примеров, ее главный файл —Animals.dbf.
Файлы этой и других таблиц примеров находятся в каталоге, путьк которому указывает псевдоним dbdemos. Настройка псевдонима может бытьвыполнена с помощью программы BDE Administrator.Компонент D a t a S o u r c e l является промежуточным звеном между компонентом T a b l e 1, соединенным с реальной таблицей БД, и визуальными компонентами D B G r i d l и D B N a v i g a t o r l , с помощью которых пользователь взаимодействует с этой таблицей. На компонент T a b l e 1, с которым связанкомпонент D a t a S o u r c e l , указывает свойство D a t a S e t последнего.Компонент D B G r i d l отображает содержимое таблицы БД в виде сетки, вкоторой столбцы соответствуют полям, а строки — записям таблицы. По умолчанию пользователь может просматривать и редактировать данные.
Компонент D B N a v i g a t o r l позволяет пользователю перемещаться по таблице, редактировать, вставлять и удалять записи. Компоненты D B G r i d l и D B N a v i g a t o r lсвязываются со своим источником данных — компонентом D a t a S o u r c e l —через свойства D a t a S o u r c e .Взаимосвязь компонентов приложения и таблицы БД и используемые приэтом свойства компонентов показаны на рис. 11.22.Форма приложенияРис. 11.22. Взаимосвязь компонентов приложения и таблицы БДЧасть 3.
Современные СУБД и их применение422Разрабатывая приложение, можно задавать значения всех свойств компонентов с помощью Инспектора объектов. При этом требуемые значения либонепосредственно вводятся в поле, либо выбираются в раскрывающихся списках. В последнем случае приложение создается с помощью мыши и не требует набора каких-либо символов на клавиатуре. В табл. 11.2 приведены компоненты, используемые для работы с таблицей БД, их основные свойства изначения этих свойств.В дальнейшем при организации приложений, использующих механизмдоступа BDE, предполагается, что названные компоненты связаны междусобой именно таким образом, и свойства, с помощью которых эта связь осуществляется, не рассматриваются.Т а б л и ц а 11.2.Значения свойств компонентовКомпонентСвойстваЗначенияTable 1DataBaseNameTableNameActivedbdemosAnimals.dbftrueDataSourcelDataSetTable 1DBGridlDataSourceDataSourcel.
DataSourceDataSourcelDBNavigatorlДля автоматизации процесса создания формы, использующей компоненты для операций с БД, можно вызвать D a t a b a s e F o r m W i z a r d ( М а с т е р ф о р мб а з д а н н ы х ) . Этот Мастер расположен на странице B u s i n e s s Хранилищаобъектов.Мастер позволяет создавать формы для работы с отдельной таблицей и сосвязанными таблицами, при этом можно использовать наборы данных T a b l eи л и Query.1 1 . 9 . Работа с отчетамиОтчет представляет собой печатный документ, в котором содержит такиеже данные, как получаемые в результате выполнения запроса к БД. Можновыделить следующие виды отчетов: простой; с группированием данных; длятаблиц, связанных отношением «главный-подчиненный»; составной, объединяющий несколько разных отчетов.
В С++ Builder для создания отчетовслужит генератор отчетов QuickReport, содержащий большой набор компонентов. Мы рассмотрим средства создания отчета и приведем пример создания простого отчета./ I. Borland С++ Builder423КомпонентыотчетаКомпоненты, предназначенные для создания отчетов, находятся на странице Q R e p o r t Палитры компонентов. Большинство компонентов отчета являются визуальными. Многие из них мало отличаются от аналогичных комп о н е н т о в с т р а н и ц Standard, Additional и Data Controls.
Н а п р и м е р , к о м п о н е н т уQRImageсоответствуют компоненты I m a g e и D B I m a g e .Главным элементом отчета является компонент-отчетQ u i c k R e p , представляющий собой основу, на которой размещаются другие компоненты. Компонент QuickRep обычно размещается на отдельной форме, предназначенной для создания отчета. По умолчанию он имеет имя Q u i c k R e p l . Если наформе размещается другой отчет (обычно так не делается), он получает имяQ u i c k R e p 2 и т. д.Компонент Q u i c k R e p при помещении его на форму имеет вид страницыформата А4, первоначально отображаемой в натуральную величину. При разработке приложения можно изменить масштаб страницы и размещенных наней компонентов с помощью свойства Z o o m типа i n t .
Значение этого свойства устанавливается в процентах, по умолчанию 100%.Отчет можно поместить на любую форму приложения, например, на главную. В этом случае отчет (страница) создает своего рода фон, на котором расположены управляющие элементы формы.Компонент Q u i c k R e p связывается с набором данных T a b l e или Q u e r y , длякоторого создается отчет, с помощью свойства D a t a S e t .
При этом набор данных Q u e r y может содержать записи, выбранные из разных таблиц. При печатиотчета в процессе выполнения приложения набор данных должен быть открыт.Во время построения отчета можно использовать специально создаваемый набор данных и размещать его на форме, при этом источник данных D a t a S o u r c eне требуется.
На практике компонент Q u i c k R e p обычно связывается с набором данных, записи которого отображаются на форме в визуальных компонентах. В этом случае в отчет попадают записи, удовлетворяющие, например, критерию фильтрации и / и л и сортировки, задаваемому пользователем.Пример. Связывание отчета с набором данных.voidfastcall TForm2::FormCreate(TObject *Sender){QuickRep 1 - > D a t a S e t = F o r m 1 ->Table 1;}находящийся на форме F o r m 2 , при обработке событияэтой формы связывается с набором данных T a b l e 1, расположеннымна форме F o r m l .
В файле реализации (исходного кода) модуля формы F o r m 2следует поместить директиву препроцессора #include «Unitl .h» для подключения заголовочного файла модуля формы F o r m 1.ОтчетOnCreateQuickRepl,Часть 3. Современные СУБД и их применение424Отчет состоит из отдельных полос — составных частей отчета, которыеопределяют содержание и вид созданного документа. Полоса представляетсобой элемент отчета. Каждый элемент размещается на своем месте и предназначен для отображения соответствующих компонентов отчета и выводаданных.
Возможный вид отчета при разработке показан на рис. 11.23.(\Г4 Form2Н Н Екниги по программированиюАвторыНазваниеИздательствоLLL-1JГОДJL_lJtotlioSTitleE'ublishingJHoiiseYear*LLL••*_l_i_l±оРис. 11.23. Вид отчета при разработкеКонструирование отчета в основном аналогично конструированию формы. Управлять наличием полос в отчете можно с помощью свойства B a n d sмножественного типа T Q u i c k R e p B a n d s . При разработке приложения включение/отключение полосы выполняется установкой логического значения соответствующего подсвойства свойства B a n d s , например, для полосы областиданных отчета этим подсвойством является H a s D e t a i l .
С помощью этого свойства в простой отчет можно включать следующие полосы:• H a s P a g e H e a d e r — верхний колонтитул;• HasTitle — з а г о л о в о к отчета;• HasColumnHeader — заголовки столбцов;• HasDetail — о б л а с т ь д а н н ы х ;• HasSummary— итог отчета;— нижний колонтитул.Перечисленные полосы можно также вставлять в отчет с помощью компонента полосы Q R B a n d , при этом тип вставляемой полосы устанавливаетсячерез свойство B a n d T y p e этого компонента.Параметры страницы отчета определяет свойство P a g e т и п а Т С Ж Р а д е , через подсвойства которого можно настраивать, например, следующие характеристики:• HasPageFooter/ I. Borland С++ Builder425• PaperSize — формат страницы (по умолчанию А4);• T o p M a r g i n , B o t t o m M a r g i n , L e f t M a r g i n и R i g h t M a r g i n — размер верхнего, нижнего, левого и правого нолей, соответственно.Единицы измерения страниц, полос, полей, а также других элементов отчета определяет свойство U n i t типа T Q R U n i t s , принимающее, к примеру, следующие значения:• Inches — д ю й м ы ;• ММ — миллиметры (по умолчанию);• C h a r a c t e r s — автоматическая настройка в соответствии с размером символов, установленным свойством QuickRep->Font->Size.При необходимости разработчик может изменить параметры страницы, атакже многие другие параметры отчета (например, шрифт по умолчанию) спомощью Инспектора объектов или в диалоговом окне R e p o r t S e t t i n g ( У с т а н о в к и о т ч е т а ) установки параметров отчета.