Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (1084484), страница 90
Текст из файла (страница 90)
Полосы определенного вида, например, полоса r b D e t a i l , приЧасть 3. Современные СУБД и их применение428формировании отчета создаются автоматически для каждой записи набораданных.В процессе выполнения приложения при вызове метода P r e v i e w также генерируются события B e f o r e P r i n t и A f t e r P r i n t .После создания полосы определенного типа в ней размещаются соответствующие компоненты, при этом необходимо использовать только компоненты страницы Q R e p o r t .
Размещение на полосе других компонентов, например, L a b e l или E d i t , не вызывает ошибки трансляции, но в сформированныйотчет такие компоненты не попадают.Можно разместить компонент отчета и вне полосы — непосредственно на компоненте-отчете Q u i c k R e p . В этом случае он будет выводиться на каждой странице отчета (например, компонент Q R I m a g e , содержащий логотип фирмы).Обычно используются следующие компоненты отчета:• Q R L a b e l — надпись, содержащая текст (аналог надписи L a b e l ) , котораяможет размещаться на любой полосе, но для полос данных обычно неиспользуется;• Q R D B T e x t — значение поля записи (аналог компонента D B T e x t ) ; обычно размещается в полосе данных;• Q R E x p r — значение, формируемое на основе выражения, в котором могут использоваться значения полей записей; обычно используется дляполос данных и нижних колонтитулов;• QRSysData — системная информация, обычно используемая для итоговых полос и полос колонтитулов; ее вид определяется свойством D a t aтипа T Q R S y s D a t a T y p e , принимающим, к примеру, значения:• q r s C o l u m n N o — помер текущего столбца (для одноколоночного отчета равен единице);• q r s D a t e T i m e — текущие дата и время;• QRImage — графический образ, загружаемый аналогично графическому образу Image (может быть использован в любой полосе, но обычноне размещается в полосах данных); с помощью компонента Q R I m a g eвыводится, например, логотип организации; кроме того, следует отличать этот компонент и от компонента Q R D B I m a g e , который обычно размещается в полосе данных и отображает рисунок из поля таблицы;• QRShape — геометрическая фигура, размещаемая в любой полосе.Перед компонентом Q R S y s D a t a может находиться надпись, которая указывается в свойстве T e x t типа A n s i S t r i n g .
По умолчанию надпись отсутствует.ПростойотчетПростой отчет представляет собой отчет на основе данных из одного набора данных и содержит сведения, которые выводятся в табличном виде бездополнительных условий, например, группирования данных. Размещение ивид печатаемых в отчете данных аналогичны размещению и виду данных, ото-/ I. Borland С++ Builder429бражаемых в сетке D B G r i d . Отличием является то, что данные отчета размещаются не на форме, а на бумажном документе, и их нельзя редактировать.Рассмотрим действия, выполняемые при подготовке простого отчета, напримере перечня книг по программированию (см. рис.
11.23). Многие из этихдействий используются и при разработке отчетов других видов. Д л я создания простого отчета требуется выполнить следующее:• разместить на форме компонент Q u i c k R e p ;• создать для компонента Q u i c k R e p требуемые полосы отчета;• разместить в полосах нужные компоненты отчета, чаще всего Q R L a b e l ,QRDBText и QRExpr;• создать для событий, например, нажатия кнопок с заголовками Печатьи Просмотр, обработчики, в которых вызываются методы печати и предварительного просмотра отчета соответственно.Размещение на форме компонента отчета, установка параметров отчета, атакже создание обработчика события нажатия кнопки печати рассмотрено приописании компонента Q u i c k R e p выше.Простой отчет может содержать следующие полосы, перечисляемые в порядке их размещения на странице:• верхний колонтитул ( r b P a g e H e a d e r ) ;• заголовок отчета ( r b T i t l e ) ;• заголовки столбцов (rbColumnHeader);• данные ( r b D e t a i l ) ;• итог отчета ( r b S u m m a r y ) ;• нижний колонтитул ( r b P a g e F o o t e r ) .Н а этапе разработки название каждой полосы выводится серым цветом вее левом нижнем углу.Можно добавить к проекту шаблон простого отчета, вызвав командой менюF i l e / N e w / O t h e r .
. . ( Ф а й л / Н о в ы й / Д р у г о й ) Хранилище объектов и выбрав настранице F o r m s ( Ф о р м ы ) объект Q u i c k R e p o r t L i s t ( Л и с т о т ч е т а ) . Шаблонэтого отчета содержит полосы заголовка отчета, заголовков столбцов и данных, нижний колонтитул и расположен на отдельной форме Q R L i s t F o r m . Наформе отчета также расположен набор данных T a b l e .Заголовок отчета выводится один раз на первой странице сразу под верхним колонтитулом, если он есть.
В полосе заголовка обычно размещаютсянадписи Q R L a b e l , содержащие требуемый текст (как правило, в качествезаголовка выводится название всего отчета). При необходимости в заголовке можно разместить, например, сведения о названии, адресе и телефонеорганизации, а также логотип. В приведенном на рис. 11.23 примере в полосе заголовка находятся название отчета. Д л я вывода названия отчета используется компонент Q R I a b e l , в котором набран текст К н и г и п о п р о г р а м м и рованию.Часть 3. Современные СУБД и их применение430Полосы заголовков столбцов и данных являются основными полосами, вкоторых размещаются компоненты, обеспечивающие табличный вывод содержимого набора данных. Заголовки столбцов выводятся на каждом листе отчета.Для заголовков столбцов данных в полосу заголовков обычно помещаются компоненты QRIabel, в которые заносится текст, соответствующий полям данных.Д л я вывода значений полей записей в полосу данных обычно помещаютсякомпоненты Q R D B T e x t и Q R E x p r .
Более простым является использованиекомпонентов Q R D B T e x t , каждый из которых отображает значение связанного с ним поля. И м я набора данных указывается в свойстве DataSet, а имя полязадается в свойстве D a t a F i l e l d . Д л я наглядности схематично состав простогоотчета и его связи с набором данных приведены на рис. 11.24.ОтчетПолоса колонтитулаПолоса заголовкаПолоса заголовков столбцовQRLabeMQRLabel2QRLabeINDataSetПолоса области данныхDataSetQRDBTeKtlQRDBText2 .. .
QRDBTextNНабор данных(Table!)DataFieldПолоса итога отчетаПолоса нижнего колонтитулаРис. 11.24. Состав простого отчета и его связи с набором данныхНа этапе разработки в отчете присутствует только одна полоса данных, нопри формировании отчета отдельная полоса данных будет выведена для каждой записи отчета. Напомним, что если набор данных является пустым и несодержит записей, то область данных не выводится. Чтобы для пустого набораданных были выведены остальные полосы (кроме полос данных), свойствуP r i n t l f E m p t y компонента Q u i c k R e p устанавливается значение true (по умолчанию).Компонент Q R E x p r позволяет вставлять в отчет значение выражения, рассчитываемого обычно с участием различных полей записей.
Выражение заносится в свойство E x p r e s s i o n типа S t r i n g , для формирования которого удоб-/ I. Borland С++ Builder431но использовать окно E x p r e s s i o n W i z a r d ( М а с т е р в ы р а ж е н и й ) , вызываемоечерез Инспектор объектов.Для вставки в выражение имени поля нужно нажать кнопку D a t a b a s e F i e l d(Поле Б Д ) и в открывшемся окне выбрать набор данных и имя поля.В выражении можно использовать функции, которые разбиты по категориям и в ы б и р а ю т с я в специальном окне, в ы з ы в а е м о м нажатием к н о п к иFunction(Функция).Названия полей и ф у н к ц и й можно набирать и вручную, однако это увеличивает вероятность ошибки.Чтобы п р о т е с т и р о в а т ь введенное выражение, следует нажать кнопкуValidate, при этом выполняется проверка выражения, а разработчику выдается сообщение о корректности выражения или об ошибке.В выражении можно использовать только поля наборов данных, которыеразмещены на форме отчета.
В противном случае набор данных оказываетсянедоступен для компонента QRExpr.При разработке п р и л о ж е н и я такие к о м п о н е н т ы отчета, как Q R I a b e l ,Q R D B T e x t и Q R E x p r , имеют одинаковый внешний вид.Итоговая полоса отчета выводится один раз в конце отчета сразу послеполосы данных. В этой полосе обычно стоят либо итоговые сведения отчета,например, средние и максимальные значения по данным какого-либо поля,либо должность и ф а м и л и я лица, утверждающего отчет. В итоговой полосеобычно размещаются компоненты Q R I a b e l для вывода надписей и Q R E x p rдля вывода значений выражений.Отметим, в качестве итога может выводиться, к примеру, число записей втаблице или заверительная подпись.Колонтитулы печатаются в начале и конце каждой страницы, в них обычно выводятся сведения о дате, времени печати, а также номер страницы.