Открытый Университет "интуит"


Скачать 240.27 Kb.
НазваниеОткрытый Университет "интуит"
страница1/4
ТипДокументы
  1   2   3   4
Национальный Открытый Университет "ИНТУИТ": www.intuit.ru

Александр Грошев. Основы работы с базами данных


Лекция 6. СУБД Microsoft Visual FoxPro. Отчеты, запросы, проекты и приложения

http://www.intuit.ru/studies/courses/93/93/lecture/1482

Разработка отчетов

Для разработки отчетов - печатных документов, отражающих информацию базы данных, в системе VFP существует Конструктор отчетов ( Report Designer ) и Мастер отчетов ( Report Wizard). Важным свойством отчетов является возможность группировки данных и получения итоговых данных для групп и всего отчета. При формировании отчетов можно задавать фильтр отбора необходимых данных либо формировать отчет на основе данных SQL-запроса или представления данных (View).

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

Существует 2 типа Мастера отчетов:

One-to-Many Report Wizard - Мастер отчета, в котором для одной записи главной таблицы существует множество записей связанной с ней дочерней таблицы.

Report Wizard - Мастер простого отчета, но с возможностью задания группировки данных.

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

Как обычно, создание нового объекта начинаем, нажав кнопку New на стандартной панели инструментов, затем выбираем Report - Wizard - One-to-Many Report Wizard.

Далее на первом шаге Мастера (рис. 6.1) выбираем базу Students и поля главной таблицы базы ( Spisok ), которые мы хотим показать в отчете.




Рис. 6.1. Шаг 1 Мастера разработки отчета

На втором шаге (рис. 6.2) выбираем поля дочерней таблицы - Ocenki.




Рис. 6.2. Шаг 2 Мастера разработки отчета

Третий шаг - подтверждаем, что эти таблицы связаны по значению поля NZ.

На четвертом шаге необходимо задать порядок сортировки данных в отчете. Мастер позволяет задать не более трех значений полей для сложной сортировки (с созданием соответствующего сложного индекса). Выберем поля N_fclt, Kurs, N_grup с сортировкой в порядке возрастания ( Ascending ).

Пятый шаг (рис. 6.3) - задаем стиль отчета, расположение его на листе (вертикальный лист - Portrait или горизонтальный - Landscape ) и суммарные параметры - расчет среднего значения ( Avg ) для поля Ball.




Рис. 6.3. Шаг 5 Мастера разработки отчета

На последнем, 6-м шаге задаем заголовок отчета, выбираем команду Сохранить отчет и модифицировать его в Конструкторе отчетов - Save report and modify it in Report Designer и после нажатия на кнопку Finish задаем имя ( Spisok ) и место сохранения файлов отчета (будут созданы два файла с одинаковым именем и расширениями *.frt и *.frx).

В окне Report Designer мы увидим отчет, показанный на рис. 6.4.




увеличить изображение
Рис. 6.4. Окно Конструктора отчетов

В Конструкторе отчет разбит на отдельные зоны, информация которых может присутствовать в отчете один раз ( Title и Summary ), в начале каждой страницы ( Page Header ) или в конце каждой страницы ( Page Footer ), в начале каждой группы ( Group Header, групп может быть много) и в конце каждой группы ( Group Footer ), а также зона показа информации каждой записи таблицы ( Detail ).

Особенность отчета, созданного Мастером, - в нем присутствуют зоны итогов для группы NZ и всего отчета, но поля для расчета средней оценки в них нет, хотя мы просили Мастера это сделать (см. рис. 6.3.). Заданное условие не было выполнено, т.к. поле ball имеет текстовый тип, а мы задали функцию для работы с числами. Для вычисления средней оценки придется самим добавить новое поле в отчет с расчетом средней оценки после преобразования в этом поле текстового значения в числовое с использованием функции Val(ball).

Контекстное меню для Конструктора отчетов (щелчок правой кнопкой мыши на пустом месте окна Report Designer ) содержит следующие пункты (рис. 6.5.):




Рис. 6.5. Контекстное меню

  • Paste - вставить;

  • Run Report: - напечатать отчет на принтере;

  • Print Preview - предварительный просмотр отчета на экране и печать на принтере;

  • Data Environment: - окно данных, связанных с отчетом;

  • Optional Bands: - страница свойств зон Title, Summary и Detail в окне свойств отчета;

  • Data Grouping: - страница группировки данных в окне свойств отчета;

  • Variables: - страница переменных в окне свойств отчета;

  • Properties: - окно свойств отчета.

Для использования в отчете названий факультетов, специальностей и предметов необходимо открыть окно Data Environment, добавить в него справочные таблицы базы и правильно установить связи между ними, как показано на рис. 6.6. (для постоянных связей базы иногда возникает неправильное направление, связь должна идти от поля главной таблицы к индексу дочерней).




Рис. 6.6. Окно данных отчета

Для связи между таблицами Spisok и Ocenki должно быть установлено свойство OneToMany = .T.

Для таблицы Spisok в окне Properties для Data Environment зададим фильтр VAL(Ocenki.ball)>1 AND VAL(Ocenki.ball)<6 AND Ocenki.data_b=>{^2006/01/10} AND Ocenki.data_b<={^2006/02/06} - условие отбора студентов, у которых есть оценки (от 2 до 5, среди баллов могут быть отметки о неявке (Н), незачете (1), зачете (6) и пр.) в заданном периоде (в фильтре используется формат даты в виде {^ГГГГ/ММ/ДД}). Установленный фильтр имеет особенность: фильтр задан для таблицы Spisok, а его логическое выражение построено из значений полей таблицы Ocenki, что не совсем обычно, но допустимо при наличии связи между этими таблицами. Если данное выражение написать как фильтр для таблицы Ocenki, в отчет могут попасть студенты, у которых нет оценок за заданный период, и средняя оценка будет рассчитана неправильно.

Для дальнейшего оформления отчета необходимо присутствие на экране двух панелей инструментов - Report Controls и Layout.

Первая панель содержит те объекты, которые можно располагать на отчетах (рис. 6.7.).




Рис. 6.7. Панель объектов отчета

Так как наша задача - представить отчет с группировкой и расчетом средних оценок по факультетам, курсам, группам, необходимо добавить новые группы в отчет и модифицировать, соответственно, индексный файл главной таблицы. Выбрав пункт Data Grouping в контекстном или главном меню (раздел Report ), добавим необходимые группы (рис. 6.8.).




Рис. 6.8. Страница группировки данных в окне свойств отчета

Далее перенесем номера факультетов, курсов и групп в зоны заголовков соответствующих групп, добавим поля с названиями из справочников факультетов, специальностей и предметов, добавим итоговые поля для расчета средних оценок ( val(ocenki.ball )). Новые поля можно создать с использованием соответствующей кнопки на панели Report Controls (рис. 6.7.) или копированием имеющихся в отчете полей (для сохранения заданного шрифта) с изменением данных, которые показывает поле (свойство Expression поля).

В свойствах итоговых полей (окно свойств выбранного поля открывается двойным кликом на нем, или выбором пункта Properties в его контекстном меню, или на клавиатуре Alt+Enter) в разделе Calculate следует правильно указать в пункте Calculation Type - Average (среднее) и в пункте Reset based on - соответствующую группу или End of Report для зоны Summary (см. рис. 6.9.).





Рис. 6.9. Окно свойств поля отчета. Страницы General и Calculate

Для таблицы Spisok следует модифицировать созданный Мастером сложный индекс с именем WIZARD_1 - добавить в него поле FIO: STR(n_fclt,2,0) + STR(kurs,1,0) + n_grup + fio.

Отчет в Конструкторе будет иметь вид, показанный на см. рис. 6.10..




увеличить изображение
Рис. 6.10. Окончательный вид отчета в Конструкторе

При предварительном просмотре ( Preview ) или после печати на принтере мы получим отчет, показанный на рис. 6.1. (примечание: перед формированием отчета откройте таблицу Ocenki, иначе заданный фильтр для таблицы Spisok вызовет сообщение об отсутствии алиаса Ocenki ).




увеличить изображение
Рис. 6.11. Фрагмент отчета, напечатанного на принтере

Отбор данных из базы с использованием SQL-запросов

Ранее отмечалось, что для работы с данными, отобранными в соответствии с каким-либо условием, может быть использована команда SET FILTER TO <условие> - установить фильтр для открытой таблицы базы данных.

Однако большими возможностями обладает так называемый SQL-запрос - команда SELECT:, сформированная в соответствии с правилами языка запросов SQL ( Structured Query Language ).

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

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

В VFP и других системах фирмы Microsoft (Word, Excel) можно использовать Конструктор запросов, что упрощает и ускоряет написание запросов. Кроме того, в VFP есть Мастер для разработки запросов разного вида. Однако использование этих средств не позволяет реализовать все возможности языка запросов. Максимальные возможности - при написании запроса в текстовом виде в любом программном модуле в соответствии с синтаксисом команды SELECT (полный синтаксис будет описан далее).

Принцип формирования запросов наиболее легко освоить при использовании Мастера запросов.

Поставим задачу отобрать информацию по экзаменационным оценкам студентов по факультету № 1 за 1-й семестр 2005/2006 учебного года по предмету № 1 ("Математика" в справочной таблице) с сортировкой данных по группам, в группах - в порядке уменьшения оценки.

Для этого выбираем на стандартной панели или в меню команду New, далее выбираем Query и нажимаем кнопку Query Wizard. В появившемся списке из трех пунктов: Cross-Tab Wizard, Graph Wizard и Query Wizard выбираем последний вариант - стандартный запрос.

На первом шаге Мастера необходимо выбрать таблицы и поля, которые следует включить в запрос. Если предварительно база данных не была открыта, следует ее выбрать с помощью кнопки рядом с полем списка Databases and tables. Выбор полей может быть выполнен из нескольких таблиц базы (рис. 6.12.).




Рис. 6.12. Мастер запросов - шаг 1

На шаге 2 следует добавить в список связей выражение SPISOK.NZ = OCENKI.NZ, что Мастер сам предложит вам сделать.

На шаге 2а вам нужно ответить на вопрос, какие записи при объединении таблиц следует включать в результаты ( join conditions - условия объединения):

only matching rows - отбираются только записи при их одновременном присутствии в обеих связанных таблицах для заданных условий отбора и связей (условие объединения Inner Join);

all rows from table SPISOK - отбираются все записи таблицы SPISOK, соответствующие условиям отбора, и связанные записи другой таблицы при их наличии (Left Outer Join);

all rows from table OCENKI - отбираются все записи таблицы OCENKI, соответствующие условиям отбора, и связанные записи другой таблицы при их наличии (Right Outer Join);

all rows from both tables - отбираются все записи таблиц SPISOK и OCENKI, соответствующие условиям отбора, независимо от наличия связанных записей другой таблицы (Full Join).

Выбираем первый вариант для нашего запроса.

На шаге 3 могут быть заданы условия отбора данных (количество условий - не более двух, в Конструкторе запросов или в тексте запроса можно увеличить их количество). Зададим условия - SPISOK.N_FCLT=1 and OCENKI.SEMESTR=1 (рис. 6.13.). В Мастере нельзя задать больше двух условий, в Конструкторе или тексте SQL -программы количество условий не ограничено.



  1   2   3   4

Похожие:

Открытый Университет \"интуит\" iconОткрытый аукцион в электронной форме
Федеральное государственное бюджетное образовательное учреждение высшего образования «Санкт-Петербургский государственный архитектурно-строительный...

Открытый Университет \"интуит\" iconОбразец резюме на должность педагога
Московский Государственный Открытый Педагогический Университет им. Шолохова, факультет «Иностранных языков», специальность «Учитель...

Открытый Университет \"интуит\" iconОбразец резюме на должность педагога
Московский Государственный Открытый Педагогический Университет им. Шолохова, факультет «Иностранных языков», специальность «Учитель...

Открытый Университет \"интуит\" iconО проведении Международного открытого шахматного фестиваля
Международный открытый шахматный фестиваль "Moscow Open 2011" проводится в г. Москве с 28 января (приезд) по 7 февраля (отъезд) 2011г....

Открытый Университет \"интуит\" iconАдрес Оргкомитета
РФ, Московский государственный университет им. М. В. Ломоносова, Московский физико-технический институт (государственный университет),...

Открытый Университет \"интуит\" iconКонкурс проводится по следующим номинациям: использование информационных...
«Новосибирскийнациональный исследовательский государственный университет», Высшим колледжем информатики Университета, Институтом...

Открытый Университет \"интуит\" icon6. Срок, место и порядок предоставления документации об аукционе
Форма торгов: открытый аукцион в электронной форме (далее – открытый аукцион, аукцион)

Открытый Университет \"интуит\" iconКонкурс Открытый конкурс
Открытый конкурс по отбору управляющей организации для управления многоквартирным домом на территории муниципального образования...

Открытый Университет \"интуит\" iconДокументация об аукционе предоставляется по адресу: 101000, г. Москва,...
Форма торгов: открытый аукцион в электронной форме (далее – открытый аукцион, аукцион)

Открытый Университет \"интуит\" iconДокументация об аукционе предоставляется по адресу: 101000, г. Москва,...
Форма торгов: открытый аукцион в электронной форме (далее – открытый аукцион, аукцион)

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск