Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БАЗЫ ДАННЫХ 2007.doc
Скачиваний:
10
Добавлен:
29.08.2019
Размер:
299.52 Кб
Скачать

10. Разработка и использование запросов (часть 1, запрос на обновление).

Помимо только что указанного недостатка разработанной формы есть и некоторые другие. Откройте таблицу «Отделы» и обратите внимание на запись об отделе автоматизации: табельный номер начальника не указан. Почему – понять не так уж сложно. Действительно, не существует ни прямой, ни косвенной связи между данными о разряде сотрудника, номере отдела, в котором он работает, и полем «начальник». Конечно, было бы удобно, если бы при выборе из выпадающего списка должности «начальник отдела» табельный номер указанного сотрудника сразу бы заносился в таблицу «Отделы». Однако такая операция требует некоторых навыков программирования, а мы сознательно ограничиваем рассмотрение простейшими приемами работы с базами данных. Поэтому назначать начальника придется с помощью дополнительной кнопки. Нажатие на эту кнопку будет приводить к выполнению запроса на обновление данных. Вообще говоря, Access предусматривает возможность составления запросов на специальном языке запросов SQL (Standard Query Language), который является общепринятым стандартом в мире баз данных. Однако поскольку Access задумывался и разрабатывался первоначально как настольная система, в нем развиты средства визуального проектирования запросов, не требующие знания какого-либо языка. Конечно, эти средства не отменяют необходимости четко понимать логику запроса.

Чтобы создать такой запрос, переключитесь на страницу «Запросы» окна базы данных и выберите пункт «Создание запроса в режиме конструктора». Двойной щелчок на этом пункте приведет к открытию двух окон одновременно – бланка запроса (оно окажется на заднем плане) и диалогового окна «Добавление таблицы». Добавьте таблицы «Отделы», «Сотрудники» и «Должности» и закройте это диалоговое окно. Обратите внимание, что в окне бланка запроса показаны не только таблицы, но и связи между ними. Теперь на панели инструментов найдите кнопку «Тип запроса» и измените тип запроса с «Выборки» (принят по умолчанию) на «Обновление» (Вы также можете воспользоваться меню «Запрос»). Это изменит наименование полей в нижней части бланка следующим образом:

Поле

Имя таблицы

Обновление

Условие отбора

или

Прежде чем заполнить поля бланка запроса, попробуем составить логическое выражение, вычисляющее нужное значение. Итак, нужно обновить значение поля «Отделы: начальник» в таблице «Отделы», записав в это поле табельный номер сотрудника («Сотрудник: табельный номер»); причем для этого сотрудника должны соблюдаться два условия. Во-первых, он должен работать в этом отделе («Сотрудник: номер отдела» = «Отделы: номер отдела»), во-вторых, должность его должна быть «начальник отдела» («Сотрудник: разряд» = «Должность: разряд» при условии «Должность: наименование» = 'начальник отдела'). Конечно, можно возразить, что разряд начальника отдела установлен равным 6, однако с введением новых должностей разрядная сетка может быть и пересмотрена – в отличие от наименования должности. Поэтому рассмотренная нами «сложная» схема представляется более устойчивой.

Теперь задача состоит в том, чтобы «перевести» логическое выражение «на Access». Дважды щелкните мышкой по полю «Отделы: начальник отдела» таблицы «Отделы» в окне бланка запроса. Оно тут же появится в первой колонке в нижней части бланка. Кроме того, сразу же будет установлено имя таблицы – «Отделы». (Можно также воспользоваться выпадающим списком в графе «Поле» первой колонки). Теперь щелкните мышкой в графе «Обновление» (опять же первой колонки) и активизируйте построитель выражений. Это можно сделать либо нажав на панели инструментов кнопку «Построить», либо воспользовавшись соответствующим пунктом контекстного меню. В открывшемся диалоговом окне Вы увидите четыре панели (возможно, их стоило бы назвать подокнами). Верхняя панель служит собственно для формирования выражений, а три нижних – отображают объекты, которые могут участвовать в формировании выражений, с разной степенью детализации. В левой нижней панели выберите категорию «Таблицы» и таблицу «Сотрудники». В средней нижней панели отобразится список полей таблицы «Сотрудники», а в правой нижней панели – только одна возможность: <Значение>.

Замечание 1. Правая нижняя панель полезна при детализации форм, функций, операторов и некоторых других категорий.

Выделите поле «Сотрудники: табельный номер» (вообще, оно должно быть подсвечено, если Вы не переключались на другое поле из списка), нажмите кнопку «Вставить», а затем – «ОК». В результате в графе «Обновление» первой колонки у Вас окажется выражение следующего вида: [Сотрудники]![сотрудники: табельный номер]. В дальнейшем, когда запрос будет выполняться, именно значение табельного номера подходящего сотрудника будет внесено в таблицу «Отделы». Теперь следует определить, какие же сотрудники являются подходящими. Двойной щелчок мышкой по полю «Сотрудники: номер отдела» приведет к появлению его в графе «Поле» второй колонки, а в графе «Имя таблицы» появится «Сотрудники». Это поле не будет обновляться, но на него будут наложены условия отбора. Поэтому перейдите к графе «Условия» второй колонки и запустите построитель выражений. Выбирая поля таблиц согласно приведенному ранее описанию, Вы должны получить следующее:

([Сотрудник]![сотрудники: номер отдела] = [Отделы]![отделы: номер отдела]) And ([Сотрудник]![сотрудники: разряд] = [Должности]![Должности: разряд]) And ([Должности]![Должности: наименование] = 'начальник отдела')

Закройте запрос и сохраните его под именем «Начальник отдела (обновление)». Вообще говоря, чтобы запустить этот запрос на выполнение, достаточно просто дважды щелкнуть по его значку в окне базы данных. Однако в начале этого раздела мы предполагали, что будет создана кнопка на форме «Сотрудники», выполняющая этот запрос. Процесс создания такой кнопки практически ничем не отличается от создания кнопок «Новый отдел» и «Новая должность». Разница состоит в том, что в первом диалоговом окне в списке «Категории» следует выбрать «Разное» (а не «Работа с формой», как раньше), а в списке «Действия» – «Выполнить запрос».

Создайте кнопку, выполняющую запрос «Начальник отдела (обновление)» и назовите ее «Новый начальник». Закройте форму «Сотрудники», чтобы сохранить внесенные изменения, и вновь откройте ее уже в обычном режиме. Откройте таблицу «Отделы»: в данный момент поле «Отделы: начальник отдела» для отдела автоматизации пусто. Теперь закройте таблицу и нажмите на кнопку «Новый начальник» в форме «Сотрудники». Откройте таблицу «Отделы» вновь и убедитесь, что в поле «Отделы: начальник отдела» указан табельный номер 4001.

Замечание 2. Вероятно, Вы уже готовы сказать: «Это неудобно! Каждый раз открывать таблицу, чтобы точно узнать, кто же в действительности начальник отдела!». Конечно, неудобно. И сейчас мы дополним форму «Сотрудники» таким образом, чтобы можно было легко получить список всех начальников отделов.

Разумеется, несложно получить доступ из формы «Сотрудники» к данным, содержащимся в поле «Отделы: начальник отдела» таблицы «Отделы». Сделать это можно разными способами; сейчас мы используем для этих целей запрос.

Вопросы:

  1. Какие типы запросов можно создавать с помощью Access? Какие из них могут создаваться только в режиме конструктора?

  2. Поясните элементы логического выражения, приведенного в этом пункте.

11. Создание и использование запросов (часть 2, запрос-выборка)

Поставим задачу отобразить интересующие нас сведения в следующем формате: |наименование отдела| |ФИО сотрудника – начальника отдела|.

Это можно сделать с помощью запроса-выборки. Переключитесь на страницу «Запросы» окна базы данных и выберите пункт «Создание запроса в режиме конструктора». Добавьте в новый запрос таблицы «Отделы» и «Сотрудники». В графу «Поле» первой колонки поместите (так же, как описывалось при создании запроса на обновление) поле «Отделы: наименование», в графу «Имя таблицы» – «Отделы». В графу «Поле» второй колонки поместите поле «Сотрудники: ФИО», в графу «Имя таблицы» – «Сотрудники». В графу «Условие отбора» с помощью построителя выражений вставьте следующее выражение:

[Отделы]![отделы: начальник] = [Сотрудник]![сотрудники: табельный номер]

Закройте запрос и сохраните его как «Список начальников». Чтобы просмотреть результаты выполнения этого запроса, дважды щелкните по его значку в окне базы данных. Список начальников отделов будет выдан в виде простой таблицы.

Замечание 1. Просмотреть результаты запроса, не сохраняя его, можно с помощью кнопки «Вид» на панели инструментов. Эта же кнопка позволяет увидеть текст запроса на языке SQL, который автоматически генерируется Access.

Теперь создадим форму на основе только что созданного запроса. Переключитесь на страницу «Формы» окна базы данных и нажмите на кнопку «Создать». Поскольку форма будет создаваться на основе только одного запроса, используйте инструмент «Автоформа» (рекомендуется выбрать ленточную). Сохраните созданную форму под именем «Начальники отделов». Эта форма будет использоваться исключительно в информационных целях. Поэтому хорошим решением будет запретить как редактирование, так и добавление и удаление данных, отображаемых в этой форме. Для этого следует вызвать диалоговое окно «Форма» с помощью пункта «Свойства» контекстного меню (или соответствующего пункта меню «Вид») и на странице «Данные» установить значения полей «Разрешить изменение», «Разрешить удаление» и «Разрешить добавление» в «Нет».

Замечание 2. Если этого не сделать, то пользователь сможет ввести в форму новый отдел, но не сможет указать его начальника. Такой способ создания новых отделов нельзя признать удачным, потому его и следует исключить.

Последнее, что нужно сделать – создать кнопку «Начальники отделов», при нажатии на эту кнопку должна открываться форма «Начальники отделов». Сделайте это самостоятельно.

Вопросы.

  1. Как можно увидеть текст SQL – запроса, который генерирует Access при создании запроса «по образцу» (т.е. с помощью бланка)? Прочитайте этот текст и прокомментируйте его.

  2. Как запретить ввод в поля формы?

12. Создание и использование запросов (часть 3, запрос с параметрами).

Те запросы, которые были Вами созданы, в некотором смысле «статичны». Чтобы изменить характер или отображение информации с помощью этих запросов, нужно редактировать их непосредственно. Это не всегда удобно. Access позволяет создавать и использовать запросы, в которых можно изменять некоторые параметры. Например, пользователь хочет узнать размер зарплаты какого-то конкретного служащего. Ему не нужны сведения обо всех, которые можно получить с помощью стандартного запроса – выборки.

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

Чтобы создать запрос с параметром, создайте сначала обычный запрос – выборку, содержащий следующие данные: фамилию, и.о. сотрудника и его оклад. Затем в той колонке, в графе «Поле» которой размещено поле «Сотрудники: ФИО», поместите в графе «Условие отбора» в квадратных скобках текст приглашения, например: [Введите фамилию, и.о. сотрудника:]. Сохраните запрос под именем «Запрос об окладе» и выполните его, дважды щелкнув по значку запроса в окне базы данных. При этом появится диалоговое окно «Введите значение параметра» с приглашением «Введите фамилию, и.о. сотрудника» и пустой строкой, в которой пользователь и должен напечатать данные сотрудника. Напечатайте в этой строке, например, «Филиппов Ф.Ф.», нажмите на «ОК» – и Вы сразу же увидите, что оклад этого сотрудника составляет 3700 р. в месяц.

Замечание 2. Фамилию сотрудника, разумеется, надо печатать без кавычек.

У разработанного запроса есть следующий недостаток. Введенные фамилия и инициалы в точности должны совпадать с теми, что содержатся в базе данных. В противном случае никакой информации не выдается. Попробуйте, например, напечатать в строке запроса «Иванов» (без инициалов) – и, нажав на «ОК», Вы увидите пустую таблицу. Исправить это положение можно, изменив условие отбора. Оператор Like (в построителе выражений есть соответствующая кнопка) в комбинации с подстановочным символом «*» позволяет выполнять поиск слов, которые начинаются с указанных символов или содержат их. Так, чтобы получить информацию о сотруднике, введя первые буквы его фамилии, следует переписать условие отбора следующим образом:

Like [Введите первые буквы фамилии сотрудника: ] & "*"

Вы можете просто отредактировать соответствующую строку или же воспользоваться построителем выражений. Теперь, чтобы узнать оклад сотрудника Иванова И.И., достаточно ввести в диалоговом окне всего одну букву: «и», при этом не имеет значения, будет ли она прописной или строчной.

Вопросы:

  1. Имеет ли значение регистр символов в запросе «Запрос об окладе»? Почему?

  2. Какие подстановочные символы могут быть использованы при создании запросов. Приведите примеры их применения.

13. Создание и использование запросов (часть 4, групповые операции)

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

Выберите на странице «Запросы» окна базы данных пункт «Создание запроса в режиме конструктора» и добавьте в бланк нового запроса таблицы «Отделы», «Должности» и «Сотрудники». Нажмите на кнопку «Групповые операции» на панели инструментов («»). Это приведет к появлению в нижней части окна бланка запроса дополнительной графы «Групповая операция». Теперь можно приступать к заполнению колонок. В графе «Поле» первой колонки поместите поле «Отделы: наименование». В графе «Имя таблицы» автоматически появится имя таблицы «Отделы», а в графе «Групповая операция» – значение по умолчанию «Группировка». Ничего изменять в первой колонке не нужно.

Вторая колонка будет содержать собственно вычисляемое выражение. Графу «Поле» нужно заполнить по следующему образцу: <Название колонки таблицы> : <вычисляемое выражение>. Название колонки таблицы не является обязательным и может быть опущено. Если оно присутствует, оно будет использовано при выводе на экран результатов запроса. В противном случае название колонки таблицы будет автоматически сформировано Access (и оно вряд ли будет информативным для пользователя). Напечатайте в графе «Поле» второй колонки следующее:

Суммарная зарплата: Sum([Должности: оклад])

Замечание 1. Достаточно длинные выражения неудобно печатать непосредственно в бланке запроса: они не видны полностью. Щелкните мышкой в ячейке, в которую нужно ввести выражение и нажмите клавиши <Shift><F2>, чтобы вызвать диалоговое окно «Область ввода». Когда ввод будет завершен, нажмите на «ОК», и выражение появится в ячейке бланка запроса.

Замечание 2. Помимо функции Sum существует еще ряд функций, наименования которых можно посмотреть в выпадающем списке графы «Групповая операция». Вместе с тем лучше использовать эти функции при записи выражений, а в графе «Групповая операция» указывать значение «выражение» (это рекомендуется и в оперативной справке).

Графу «Таблица» следует оставить пустой, а в графе «Групповая операция» выбрать из выпадающего списка значение «Выражение».

Следующие две колонки используются для формирования условий отбора. Таблица «Отделы» в нашей базе данных не связана непосредственно с таблицей «Должности», поэтому требуется указать, что для вычисления фонда зарплаты отдела нужно выбрать всех сотрудников, работающих в данном отделе (используя поля «номер отдела» таблиц «Отделы» и «Сотрудники»), с окладом, соответствующим их разряду (используя поля «разряд» таблиц «Сотрудники» и «Должности»). Поэтому третья и четвертая колонки бланка запроса заполняются следующим образом:

Поле

[Сотрудник]![сотрудники: разряд]

[Сотрудник]![сотрудники: номер отдела]

Имя таблицы

Групповая операция

Условие

Условие

Сортировка

Вывод на экран

Условие отбора

[Должности]![Должности: разряд]

[Отделы]![отделы: номер отдела]

или

Замечание 3. Здесь приведены только третья и четвертая колонки бланка запроса, а не весь бланк!

Замечание 4. Заполнить графы «Поле» и «Условие отбора» легче всего, дважды щелкая мышкой на соответствующих полях таблиц в верхней части бланка запроса.

Просмотрите результаты запроса, и если он корректно работает, сохраните его.

Замечание 5. Данные можно группировать и по нескольким полям. Однако в таких случаях рекомендуется использовать перекрестные запросы.

Вопросы.

  1. Какие групповые операции возможны в Access?. Охарактеризуйте их.

  2. Создайте запрос с параметром, вычисляющий среднюю величину оклада в данном отделе (название отдела вводит пользователь).

14. Генерация отчетов (часть 1)

Создание отчетов похоже на создание форм. И, как и в случае создания форм, удобнее воспользоваться мастером. Кроме того, поскольку (в отличие от формы) в отчете заведомо не нужно редактировать какие бы то ни было данные после его генерации, удобно создавать отчет на основе запроса. Щелкните дважды на пункте «Создание отчета с помощью мастера» (или воспользуйтесь кнопкой на панели инструментов) и выберите в качестве основы для отчета запрос «Список начальников». В списке доступных полей Вы увидите два поля: «отделы: наименование» и «Сотрудники: ФИО». Переместите оба поля в список выбранных полей и нажмите на кнопку «Далее». Следующее диалоговое окно предлагает выбрать вид представления данных. Предлагаемый по умолчанию вид представления данных зависит от того, какое поле было помещено первым в список выбранных полей. Изменить его можно, выбрав то или иное название таблицы из списка в левой части диалогового окна.

Замечание 1. Кнопка «Вывести дополнительные сведения», также расположенная в левой части диалогового окна, возможно, поможет Вам выбрать наиболее подходящий вариант.

Щелкните мышкой по пункту «Сотрудники» (обратите внимание, как изменится образец в правой части диалогового окна) и нажмите на кнопку «Далее». Следующее диалоговое окно предлагает добавить уровни группировки. В нашем случае смысла эта операция не имеет, поскольку в каждом отделе есть только один начальник (обратное также верно). Отметим лишь, что допускается использовать до четырех уровней группировки, и при добавлении хотя бы одного уровня становится доступной кнопка «Группировка», задающая интервалы группировки. Итак, ничего не меняя, переходим к следующему диалоговому окну, нажав, как обычно, кнопку «Далее». Это окно позволяет задать порядок сортировки, причем допускается сортировка записей по возрастанию или по убыванию, включающая до четырех полей. Выберем (исключительно для примера, а не в практических целях) сортировку по алфавиту по полю «Отделы: наименование».

Замечание 2. Чтобы изменить порядок сортировки на обратный, достаточно нажать на кнопку рядом с соответствующим выпадающим списком.

Вновь нажмите на кнопку «Далее», и перед Вами появится очередное диалоговое окно, предлагающее выбрать вид макета для отчета. Для наших целей вполне подходит макет «табличный», ориентацию и ширину полей менять не будем. Следующее диалоговое окно позволяет определить стиль отчета. Выбор из списка стилей приводит к изменению образца в левой части диалогового окна. Просмотрите доступные стили, выберите понравившийся Вам вариант и нажмите кнопку «Далее», чтобы перейти к последнему диалоговому окну, позволяющему задать имя отчета. Назовите его «Начальники отделов» и нажмите кнопку «Готово». Спустя несколько секунд Access продемонстрирует Вам получившийся отчет.

По умолчанию Access использует в качестве заголовков столбцов отчета названия соответствующих полей таблиц (в нашем случае это «отделы: наименование» и «сотрудники: ФИО»). Отчет будет выглядеть лучше, если заменить эти заголовки более информативными, например «Отдел» и «Начальник отдела». Переключитесь из режима просмотра отчета в режим конструктора (можно сделать это либо с помощью кнопки «Конструктор» окна базы данных, либо с помощью меню «Вид» или кнопки «Вид» на панели инструментов главного окна MS Access) и отредактируйте эти надписи соответствующим образом. Обратите внимание: заголовки столбцов размещены в области верхних колонтитулов. Такой подход обеспечивает их вывод на каждой странице отчета. В области нижних колонтитулов размещены два поля. Одно обеспечивает печать текущей даты в левом нижнем углу каждого листа отчета, другое же – выводит номер страницы в формате «страница …(номер) из … (количество)». Как и в случае форм, пункт «Свойства» контекстного меню (или соответствующий пункт меню «Вид») вызывает диалоговое окно свойств объекта, позволяющее настроить, в частности, формат вывода данных. Воспользуйтесь окнами свойств описанных полей и измените их настройки следующим образом. Шрифт, которым выводятся дата и номер страницы – Times New Roman Cyr, размер шрифта – 8 пт., насыщенность – «тонкий», начертание – обычное (не курсив). Дата должна выводиться в кратком формате. Номер страницы должен выглядеть следующим образом: <длинное тире><номер страницы><точка> (например, «— 1.»). Цвет текста и выравнивание выберите на свое усмотрение. Сохраните внесенные изменения.

Вопросы.

  1. Какие виды отчетов позволяет создавать Access?

  2. Создайте с помощью средства «Автоотчет» два отчета на базе запроса «Начальники отделов» – «Автоотчет: в столбец» и «Автоотчет: ленточный». Сравните полученные отчеты с созданным самостоятельно.

15. Генерация отчетов (часть 2)

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

Выберите в окне базы данных на странице «Запросы» пункт «Создание отчета с помощью мастера» и в первом диалоговом окне в список выбранных полей поместите поля «Сотрудники: ФИО» и «Сотрудники: табельный номер» из таблицы «Сотрудники» и поле «Отделы: наименование» из таблицы «Отделы». Во втором диалоговом окне (представление данных основано на таблице «Сотрудник») менять ничего не нужно. В третьем диалоговом окне следует добавить группировку по полю «Отделы: наименование». Для этого в списке в левой части диалогового окна нужно выделить это поле и нажать на кнопку «>». Образец в правой части диалогового окна изменится. Поле «Отделы: наименование» будет отделено от остальных полей и выделено другим цветом (синим).

Замечание 1. Кнопка «Группировка» диалогового окна при этом станет доступной. Нажав на нее, Вы увидите новое диалоговое окно «Интервалы группировки». По умолчанию для интервала группировки установлено значение «обычный»; на выбор предлагаются также следующие варианты: «по 1-ой букве», «по 2 первым буквам», и т.д. – до 5 первых букв.

Перейдите к следующему диалоговому окну и добавьте сортировку по полю «Сотрудники: ФИО». Вид макета отчета и стиль отчета выберите самостоятельно. Назовите отчет «Сотрудники фирмы». Просмотрите созданный отчет и отредактируйте заголовки, поля даты и номера страниц так, как сочтете нужным.

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

Активизируйте мастер отчетов и добавьте в первом диалоговом окне в список выбранных полей следующие (желательно в указанном порядке): «Отделы: наименование», «Сотрудники: ФИО», «Должности: оклад». Во втором диалоговом окне представление данных по умолчанию основано на таблице «Отделы», что подходит для наших целей.

Замечание 2. В предыдущем отчете («Сотрудники фирмы») можно было просто изменить представление данных – и группировки бы не потребовалось... Реально группировка может потребоваться в иных, более сложных ситуациях; мы же ограничились учебным примером.

Уровни группировки в третьем диалоговом окне добавлять не нужно, переходите к следующему диалоговому окну и выберите сортировку в алфавитном порядке по полю «Сотрудники: ФИО». Обратите внимание: в этом диалоговом окне присутствует кнопка «Итоги», вызывающая соответствующее диалоговое окно. В этом окне («Итоги») можно определить, какие итоговые значения необходимо вычислить. В нашем случае предлагается вычислить сумму (Sum), среднее значение (Avg), минимум (Min) и максимум (Max) по полю «Должности: оклад». Отметьте (поставьте галочку) значения Sum и Avg. В этом диалоговом окне можно также выбрать режим отображения: либо «данные и итоги», либо «только итоги». Оставьте предлагаемый по умолчанию вариант («данные и итоги»). Закройте это диалоговое окно и, выбрав макет отчета и стиль отчета, назовите отчет «Зарплата» и просмотрите его. Отредактируйте отчет таким образом, чтобы названия полей были информативны, а поля, содержащие вспомогательную информацию, не были бы видны.