Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 [ 130 ] 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

£4пл QpHu Вллп iffvt J)tH» 2

!]t4fi[I Н1-чпг (jl-:kKdhni.]hijca!-

№9lu

Итff m я

11»

1411

csrathhh nil


I Сида» i I

Рис. 11.21.

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

Элементы управления отчетов не имеют свойств событий, но эти свойства присутствуют у каждой из областей отчета, в том числе и у заголовков групп. Это свойства OnFormat, OnPrint, OnRetreat.

Событие Format (Форматирование) происходит при форматировании части отчета, к которой он относится, то есть на внутреннем уровне происходит установка свойств, которые мы задали при конструировании отчета. Имеет смысл иногда сделать эти свойства динамическими, чтобы при форматировании каждой группы отдельные элементы получали разные свойства в зависимости от того, к какой группе они относятся.

Запишите следующий код для процедуры события форматирования заголовка группы:

Private Sub ЗаголовокГруппы0 Format(Cancel As Integer, FormatCount As Integer) Dim kolor As String kolor = country name If Trim(kolor) = "Германия" Then

Me!country name.ForeColor = 255 risrep.Picture = "c:\project book\Flggerm.ico"

End If

If Trim(kolor) = "Италия" Then

Me!country name.ForeColor = RGB(0, 255, 0) risrep.Picture = "c:\project book\FlgItaly.ico"

End If

If Trim(kolor) = "США" Then

Me!country name.ForeColor = RGB(0, 0, 255) risrep.Picture = "c:\project book\Flgusa01.ico"

End If End Sub

Теперь при выводе нашего отчета для предварительно просмотра будет изучаться значение элемента управления country name и после этого устанавливаться свойство ForeColor (цвет шрифта) объекта country name и свойство Picture объекта risrep, который в нашем случае является элементом управления для вывода значка с национальным флагом страны, являющейся заголовком группы. В итоге получается отчет, который представлен на рис. 11.22.



£)Пл J]ptat4 Влцрч чкт Cfpot Дин» 2

jjj f<\ Ola j Эти*I


Рис. 11.22.

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

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

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

• максимально используйте мастеры построения отчетов;

• создавайте свои автоформаты;

• используйте шаблоны, если необходимо построить большое количество схожих отчетов;

• используйте перекрестные запросы, когда попадаете в затруднительную ситуацию (например, если необходимо значения какого-нибудь поля сделать заголовками колонок);

• используйте параметрические запросы, чтобы уменьшить время предварительной обработки и сэкономить бумагу, а тем самым и кислород для себя и своих потомков;

• активно используйте свойства событий как самого отчета, так и его составных частей.

СУБД Access позволяет чрезвычайно легко организовать печать отчетов из формы. Для этого действительно достаточно нескольких щелчков мышью.

Откройте какую-либо форму в Конструкторе формы. Выделите на панели элементов кнопку "Кнопка". Щелкните мышкой на форме в месте, где должен находиться левый верхний угол будущей кнопки для печати отчета. Автоматически запустится Мастер "Создание кнопок". Выберите в списке категорий пункт "Работа с отчетом", а в списке действий - "Печать отчета". На следующем шаге из списка необходимо выбрать имя одного из созданных ранее отчетов. Далее останется выбрать значок, которым будет украшена кнопка, и назначить ей имя, например cmdPrint.

В форме появится кнопка, при нажатии на которую будет печататься требуемый отчет. Если в Конструкторе формы вы посмотрите на код, который будет выполняться при наступлении события OnClick для этой кнопки (нажатие кнопки), то увидите следующий текст:

Sub cmdPrint Click()

On Error GoTo Err cmdPrint Click

Dim stDocName As String

stDocName = "Account"

DoCmd.OpenReport stDocName, acNormal Exit cmdPrint Click:



Exit Sub Err cmdPrint Click:

MsgBox Err.Description Resume Exit cmdPrint Click

End Sub

В данном примере для печати отчета используется метод OpenReport, который в программе выполняет макрокоманду "ОткрытьОтчет" (OpenReport). Этот метод имеет следующий синтаксис:

DoCmd.OpenReport ИмяОтчета [, Режим] [, ИмяФайла][,Условие]

Аргумент ИмяОтчета представлят имя отчета, хранящегося в текущей базе данных. Для задания значения аргумента Режим может использоваться одна из следующих встроенных констант:

• acNormal - печать отчета (по умолчанию);

• acDesign - вызов Конструктора отчета;

• acPreview - вывод отчета в окно предварительного просмотра.

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

Аргумент Условие позволяет задать допустимое предложение SQL WHERE без ключевого слова

WHERE

Необходимо отметить, что в Access мы можем легко вывести на печать не только отчет, но и любой активный объект, например форму или таблицу. Для этого используется метод PrintOut, который выполняет макрокоманду "Печать" (PrintOut). Синтаксис этого метода имеет следующий вид:

DoCmd.PrintOut [Диапазон] [, СоСтраницы, ПоСтраницу] [, Качество] [, ЧислоКопий] [, РазобратьКопии]

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

• acPrintAll - для печати всего отчета (по умолчанию);

• acSelection - для печати фрагмента отчета;

• acPages - для печати указанных страниц. При этом должны быть указаны аргументы СоСтраницы и ПоСтраницу.

Для задания значения аргумента Качество должна использоваться одна из следующих встроенных констант:

• acHigh - высокое качество печати (разрешение принтера) - по умолчанию;

• acMedium - среднее качество печати;

• acLow - низкое качество печати;

• acDraft - печать черновика.

Число печатаемых копий отчета задается аргументом ЧислоКопий которое по умолчанию равно

Задание для аргумента РазобратьКопии значения, равного True(-1), определяет печать с раскладкой по копиям, а False (0) - печать без раскладки. Если оставить данный аргумент пустым, будет принято значение по умолчанию (True).

Напомним, что в Access необязательный аргумент посреди списка аргументов разрешается пропустить, однако при этом необходимо ввести запятую, отделяющую пропущенный аргумент. Если опускаются один или несколько последних аргументов, вводить запятые вслед за последним указанным аргументом не требуется.

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

Private Sub cmdForm Click() DoCmd.PrintOut(acPrintAll„3)



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 [ 130 ] 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146