Visual FoxPro   Обзор графических пакетов 3GL   Компьютерная графика к экономической информатике   к 4GL - визуальному программированию

Программирование в VisualFoxPro 7.0

Расширенные средства создания отчетов

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

  Использование в отчетах представлений данных

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

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

  1. Откройте проект Sales.
  2. Для создания нового отчета откройте окно конструктора отчетов.
  3. Откройте окно Data Environment (Среда окружения), выполнив команду Environment (Окружение) из меню View (Вид) или выбрав команду Data Environment (Среда окружения) всплывающего меню.
  4. Для добавления представления данных в среду окружения выполните команду Add (Добавить) из меню Data Environment (Среда окружения).
  5. В открывшемся диалоговом окне Add Table or View (Добавить таблицу или представление данных) установите опцию View (Представление данных) и выберите из списка представление данных sumcust.
  6. Закройте окно Data Environment (Среда окружения).
  7. Создайте стандартный отчет, используя команду Quick Report (Стандартный отчет) из меню Report (Отчет). При создании отчета воспользуйтесь размещением по строкам и выберите все поля представления данных.
  8. Скорректируйте заголовки полей в полосе Page Header (Верхний колонтитул) отчета.
  9. Добавьте в отчет группировку по коду клиента, воспользовавшись командой Data Grouping (Группировка данных) из меню Report (Отчет).
  10. В полосе Group Footer (Группа снизу) создайте итоговое поле, которое будет суммировать продажи по каждому клиенту.
  11. Добавьте в отчет полосы для размещения заголовка и итоговой части отчета, выполнив команду Title/Summary (Титул/Итоги) из меню Report (Отчет).
  12. В заголовке отчета введите текст Стоимость продаж по клиентам.

  Этикетки

На практике часто возникает необходимость в создании отчетов, предназначенных для рассылки информации рекламного характера потенциальным клиентам или рассылки сведений о результатах деятельности предприятия за отчетный период. В Visual FoxPro для этих целей имеется специальный тип отчетов и соответствующий мастер для создания почтовых этикеток. В данном разделе мы рассмотрим создание этикеток, как с помощью мастера, так и в окне конструктора этикеток.

  Использование мастера при создании этикеток

Сначала рассмотрим создание этикетки с помощью мастера. Выполните следующие действия:

  1. Откройте созданный проект.
  2. Выберите вкладку Documents (Документы).
  3. Установите курсор в группу Labels (Этикетки) и нажмите кнопку New (Новый) окна конструктора проекта.
  4. Открывается диалоговое окно New Label (Новая этикетка). Выберите в нем опцию Label Wizard (Мастер этикетки).

Совет

Для запуска мастера создания этикеток вы можете также в меню Tools (Сервис) выбрать команду Wizards (Мастера), а затем в открывшемся меню — опцию Label (Этикетка).

  1. Запускается мастер по созданию почтовой этикетки. В его первом диалоговом окне выберите источник данных (рис. 17.1), т. е. укажите таблицу, из которой будут выбираться данные, и нажмите кнопку Next (Далее).
  2. На втором шаге из предложенного списка наиболее часто используемых размеров этикеток выберите подходящий (рис. 17.2). Столбец Avery содержит наименования этикеток. В столбце Dimensions (Размеры) отображается размер этикетки, а в столбце Columns (Колонки) — количество колонок этикеток, помещаемых на странице. По умолчанию размер этикеток указывается в дюймах, а при установке опции Metric (Размерность) — в миллиметрах.

В этот список можно добавить новые размеры этикеток. Для этого нажмите кнопку New Label (Новая этикетка). Открывается диалоговое окно Custom Labels (Пользовательские этикетки) (рис. 17.3) со списком пользовательских этикеток. В этом окне можно ввести новые размеры этикеток или изменить существующие.

gl17-2.jpg

Рис. 17.1. Выбор источника данных для создания этикеток

gl17-3.jpg

Рис. 17.2. Выбор типа этикетки

Для создания новой или редактирования существующей этикетки необходимо нажать кнопку New (Новый) или Edit (Редактировать) соответственно. При этом открывается диалоговое окно New Label Definition (Определение размеров новой этикетки) (рис. 17.4), позволяющее ввести размеры этикетки или отредактировать установленные. Введите на схеме размеры этикетки, введите в поле Label Name (Наименование этикетки) наименование этикетки и нажмите кнопку Add (Добавить) или Update (Обновить) для добавления или изменения этикетки соответственно.

gl17-4.jpg

Рис. 17.3. Диалоговое окно Custom Labels со списком пользовательских размеров

gl17-5.jpg

Рис. 17.4. Диалоговое окно New Label Definition для определения нового размера этикетки

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

Разместив все необходимые поля (рис. 17.5), нажмите кнопку Next (Далее) для перехода к следующему шагу.

gl17-6.jpg

Рис. 17.5. Расположение объектов в этикетке

  1. Теперь следует задать порядок сортировки данных (рис. 17.6). Перенесите из списка Available fields or index tag (Имеющиеся поля и индексы) в список Selected fields (Выбранные поля) поля или индексы, по которым хотите упорядочить этикетки. Нажмите кнопку Next (Далее).
  2. В последнем окне мастера укажите вариант завершающих действий (сохранение этикетки, сохранение и открытие ее в конструкторе этикеток или сохранение и печать), выбрав соответствующую опцию.

При выборе второй опции созданная этикетка сохраняется на диске и открывается в окне конструктора этикеток (рис. 17.7). На рис. 17.8 показана созданная с помощью мастера этикетка в окне предварительного просмотра.

Совет

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

gl17-7.jpg

Рис. 17.6. Определение порядка сортировки

gl17-8.jpg

Рис. 17.7. Созданная этикетка в окне конструктора этикеток

gl17-9.jpg

Рис. 17.8. Созданная этикетка в окне просмотра

  Создание этикетки с помощью конструктора

При создании сложных этикеток вы можете использовать конструктор этикеток. Для его открытия выполните одно из следующих действий.

Открывается диалоговое окно New Label (Новая этикетка) (рис. 17.9), где в табличном виде находится список наиболее часто используемых этикеток. Столбцы таблицы имеют следующее назначение:

Выберите из предложенных вариантов требуемый тип этикетки и нажмите кнопку ОК. На экране откроется окно конструктора этикеток (рис. 17.10).

gl17-10.jpg

Рис. 17.9. Диалоговое окно New Label

gl17-11.jpg

Рис. 17.10. Окно конструктора этикеток

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

Рассмотрим создание этикетки на примере подготовки адресов для рассылки корреспонденции клиентам, используя информацию из таблицы customer. Этот пример аналогичен примеру создания многоколоночного отчета, описание которого дано в главе 8.

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

Для создания этикетки выполните следующие действия:

  1. В меню File (Файл) выберите команду New (Новый). В открывшемся диалоговом окне New (Новый) установите опцию Label (Этикетка) и нажмите кнопку New file (Новый файл).
  2. В открывшемся диалоговом окне New Label (Новая этикетка), содержащем список типов наиболее часто используемых этикеток, выберите этикетку такого типа, которая удовлетворяет вашим требованиям.
  3. Откройте окно Data Environment (Среда окружения) и добавьте в него таблицу Customer.
  4. Воспользовавшись командой Quick Report (Стандартный отчет) из меню Report (Отчет), перенесите в этикетку поля, содержащие почтовый индекс, страну проживания клиента, его адрес, фамилию, имя и отчество. При этом выберите размещение полей по строкам.
  5. В окне конструктора разместите поля так, как это принято для почтовых этикеток в конкретной стране. В рассматриваемом примере будем считать, что почтовые этикетки изготавливаются для рассылки в пределах СНГ, поэтому расположим их так, как показано на рис. 17.11.
  6. Просмотрите созданные этикетки в окне просмотра. В результате вы увидите отчет, показанный на рис. 17.12.

Замечание

В том случае, если вы хотите изменить количество этикеток, печатаемых на одной странице, или порядок их расположения, выберите в меню File (Файл) команду Page Setup (Разметка страницы). Затем в открывшемся диалоговом окне Page Setup (Разметка страницы) установите новые значения параметров, как при работе с обычным отчетом.

  1. Сохраните созданную этикетку. Для этого в меню File (Файл) выберите команду Save as (Сохранить как).
gl17-12.jpg

Рис. 17.11. Расположение полей при создании почтовых этикеток

gl17-13.jpg

Рис. 17.12. Просмотр почтовых этикеток

  1. Если работа над этикетками закончена, напечатайте их, воспользовавшись командой Print (Печать) из меню File (Файл).

  Использование в отчетах отношения "один-ко-многим"

Visual FoxPro поддерживает в отчетах отношение "один-ко-многим". Эта возможность упрощает отображение в отчете иерархических данных. Добавим в форму просмотра телефонов клиентов и их заказов, созданную в главе 75, средства для печати телефонов клиента, информация о котором отображена в форме. Для этого в форме расположим кнопку для печати телефонов (рис. 17.13) и создадим соответствующий отчет.

  1. Откройте Проект Sales.
  2. Откройте для модификации форму Клиенты и продажи.
  3. Добавьте в форму кнопку с надписью Печать.
  4. Откройте окно свойств кнопки. Выберите метод click (Нажатие) и введите в окне процедуры следующий текст программы вызова отчета:

curiCdCustomer=icdCustomer

REPORT FORM RepCust TO PRINTER;

FOR PhonCust.icdCustomer=curiCdCustomer

SELECT PhonCust

SET SKIP TO

select Customer

ThisForm.Refresh()

  1. Откройте новое окно конструктора отчетов и добавьте в окно Data Environment (Среда окружения) таблицы customer и PhonCust.
  2. Главной таблицей отчета является Customer, а подчиненной по отношению к ней — таблица PhonCust. Установите связи между этими таблицами и определите свойство опетомапу (Один-ко-многим), выбрав значение True (Истина) (рис. 17.14).
  3. В заголовке отчета расположите его название.
  4. Добавьте в отчет группировку по коду клиента.
  5. В полосе Group Header (Группа сверху) разместите поля из таблицы customer и надписи к ним, а также надписи к полям из таблицы phoncust.
  6. В полосе Detail (Детали) разместите поля из таблицы Phoncust.
  7. Созданный отчет представлен на рис. 17.15. Сохраните отчет под именем RepCust.
  8. Запустите на выполнение форму Клиенты и продажи. Для печати телефонов клиента, на котором установлен курсор, нажмите кнопку Печать телефонов. На рис. 17.16 приведен вариант просмотра отчета на экране.
gl17-14.jpg

Рис. 17.13. Форма Клиенты и продажи

gl17-15.jpg

Рис. 17.14. Установка отношения "один-ко-многим"

gl17-16.jpg

Рис. 17.15. Отчет для печати телефонов клиентов

gl17-17.jpg

Рис. 17.16. Отчет для печати телефонов клиентов в окне просмотра

Visual FoxPro   Обзор графических пакетов 3GL   Компьютерная графика к экономической информатике   к 4GL - визуальному программированию

Знаете ли Вы, что cогласно релятивистской мифологии "гравитационное линзирование - это физическое явление, связанное с отклонением лучей света в поле тяжести. Гравитационные линзы обясняют образование кратных изображений одного и того же астрономического объекта (квазаров, галактик), когда на луч зрения от источника к наблюдателю попадает другая галактика или скопление галактик (собственно линза). В некоторых изображениях происходит усиление яркости оригинального источника." (Релятивисты приводят примеры искажения изображений галактик в качестве подтверждения ОТО - воздействия гравитации на свет)
При этом они забывают, что поле действия эффекта ОТО - это малые углы вблизи поверхности звезд, где на самом деле этот эффект не наблюдается (затменные двойные). Разница в шкалах явлений реального искажения изображений галактик и мифического отклонения вблизи звезд - 1011 раз. Приведу аналогию. Можно говорить о воздействии поверхностного натяжения на форму капель, но нельзя серьезно говорить о силе поверхностного натяжения, как о причине океанских приливов.
Эфирная физика находит ответ на наблюдаемое явление искажения изображений галактик. Это результат нагрева эфира вблизи галактик, изменения его плотности и, следовательно, изменения скорости света на галактических расстояниях вследствие преломления света в эфире различной плотности. Подтверждением термической природы искажения изображений галактик является прямая связь этого искажения с радиоизлучением пространства, то есть эфира в этом месте, смещение спектра CMB (космическое микроволновое излучение) в данном направлении в высокочастотную область. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution