Как сделать перекрестный запрос в опен офис

Обновлено: 07.07.2024

Создаем с помощью Microsoft Office Access перекрестный запрос, который будет показывать общее количество предметов, которые изучаются во всех группах по всем специальностям. Опять же нам необходимо открыть "конструктор запросов". Найти данное меню можно назав на меню "создание", после этого появится поле другие. Там-то и выбираем конструктор.
После этого выпадет диалоговое окно с несколькими пунктами, из которых необходимо выбрать нужные. Для создания запросы мы выбираем из выпавшего окна два пункта: группы и изучаемые предметы. Затем можно закрыть диалоговое окно.
В поле запроса выбираем из меню "группы" два пункта: специальность и номер группы. Во втором меню выбираем изучаемые предметы. После этого выбираем тип запроса - перекрестный в верхнем меню.
Далее нужно выбрать заголовки столбцов и строк. Это будут специальность и номер группы соответственно. Конкретное значение у нас будет иметь поле "предмет". Чтобы посчитать их количество нужно поставить функцию Count в выпадающем меню.
Запустить запрос можно с помощью иконки выполнить в верхнем левом углу. Она отмечена красным восклицательным знаком. В итоге должен получиться перекрестный запрос со столбцами в виде специальностей и строк в виде групп.


01:13

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

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

Построение перекрестного запроса с использованием мастера

Задача, для решения которой потребуется перекрестный запрос, формулируется так: необходимо выяснить, сколько аварий (чрезвычайных ситуаций) определенных видов произошло на территории разных субъектов Российской Федерации (краев и областей). Источником информации послужит таблица Fiie1.

Формирование перекрестного запроса лучше всего начать с помощью мастера запросов. Открыв вкладку Запросы окна базы данных, с помощью кнопки

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

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

Теперь понадобится третья переменная, значения которой можно подсчитывать, причем они должны соответствовать значениям первых двух полей. Главное, чтобы это третье указанное поле не имело пропусков, то есть нулевых значений. Следовательно, лучше всего подойдет поле Номер. В качестве функции для подсчета числа значений выберите Число (одна из функций групповой обработки данных). Иначе говоря, в конце концов будет определено количество значений поля Номер для каждой ячейки, которая находится на пересечении столбца (ЧС определенного вида) и строки (того или иного региона Российской Федерации) – рис. 11.66. Теперь, когда вы подготовили все необходимое для создания запроса, щелкните по кнопке Далее.

Фактически вы объявили заголовками столбцов или полей все наименования ЧС в таблице, кроме их дубликатов, которые система не пропустит (вместе с повторяющимися именами таких заголовков было бы не 507, а значительно больше). Действительно, многовато. Объяснение здесь простое: при формировании перекрестного запроса вы не вводили каких-либо критериев отбора. Впрочем, при использовании мастера перекрестных запросов этого сделать все равно нельзя. Если вы хотите задать такие условия, то нужно сформировать обычный запрос.

Ввод условий отбора записей в конструкторе запросов

В окне базы данных на вкладке Запрос откройте ваш перекрестный запрос в режиме конструктора (см. рис. 11.69). Теперь надо задать критерии отбора записей. Будем считать, что нас по-прежнему интересует количество ЧС по регионам, но только если эти ЧС связаны с пожарами.

Поэтому введите в запрос условие *пожар*, как показано на рис. 11.70. Если вы отдадите команду на выполнение запроса, то в результате получите таблицу, фрагмент которой приведен на рис. 11.71.

Результат этого дополненного запроса вы видите на рис. 11.73, где показан тот же фрагмент таблицы, что и в предыдущем случае. Во-первых, число аварий по регионам возросло (Иркутская, Кемеровская области). Во-вторых, увеличился список регионов, например добавилась Мурманская область, которой раньше не было в этом перечне.

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

Данный текст является ознакомительным фрагментом.

Продолжение на ЛитРес

11.3. Запрос и изменение информации inode

11.3. Запрос и изменение информации inode 11.3.1. Поиск информации inode В начале этой главы информационный узел файла (inode) был представлен как структура данных, которая отслеживает информацию о файле, независимо от представления ее для процесса. Например, размер файла является

20.9.2 Запрос get и ответ на него

20.9.2 Запрос get и ответ на него На рис. 20.10 показаны запрос get-request и ответ на него (response), полученные в анализаторе Sniffer компании Network General. Запрос содержит список из пяти переменных, значения которых нужно получить. После каждого идентификатора переменной стоит заполнитель NULL.

20.9.3 Запрос get-next и ответ на него

20.9.4 Запрос set

Уточняем запрос в поисковой системе

Что такое запрос

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

Запрос версии сервера Firebird

Запрос версии сервера Firebird Переключатель -z (без параметров) показывает версию gfix и сервера Firebird, инсталлированного на сервере.Вот синтаксис:gfix

Запрос на удаление записей

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

АВАР/4 Запрос

АВАР/4 Запрос Конечные пользователи могут создавать простые отчеты с помощью АВАР/4 Query. С помощью удобного интерфейса пользователь может указать область или предмет, который его интересует, а также соответствующие таблицы, желаемые поля и оформление списка. Система

Аутентификация "запрос-ответ"

Неявный запрос на базе времени

Неявный запрос на базе времени Рис. 2.3 иллюстрирует аутентификацию на базе времени [72]. Пользователь А шифрует значение текущего времени на часах своего компьютера и отправляет свое имя и шифртекст на сервер. Сервер расшифровывает значение, присланное пользователем А.

Создание перекрестного отчета с изменяющимся числом столбцов

Рассмотрим возможности обработки событий в отчете на примере отчета "Выработка сотрудников". Этот отчет строится на базе перекрестного запроса и показывает выработку сотрудников отдела продаж за год по месяцам. Максимальное число столбцов в отчете — 14. Первый столбец содержит фамилии сотрудников, следующие двенадцать столбцов — выработку для каждого месяца и последний столбец — итоговый. (Как выглядит этот отчет, мы показывали в разд. "Перекрестные отчеты" гл. 10.)

В качестве источника данных для такого запроса используется перекрестный запрос "Выработка сотрудников", представленный на рис. 13.35.

Рис. 13.35. Перекрестный запрос "Выработка сотрудников"

Поле "Отпускная цена" является вычисляемым, и для его вычисления используется формула

Создание такого отчета требует написания довольно большого числа процедур обработки событий.

В запросе в качестве критерия выборки заказов указан год — 1998. Нужно вывести приглашение пользователю, чтобы он, в свою очередь, мог ввести желаемый год. Это можно сделать при открытии отчета. Сначала нужно создать базовый набор записей для отчета и посчитать, сколько получилось столбцов в этом наборе. Следующая процедура обрабатывает событие Открытие (On Open) отчета:

Private Sub Report_0pen(Cancel As Integer)

On Error Resume Next

' Создает базовый набор записей для отчета.

Dim intX As Integer

Dim qdf As QueryDef

Dim frm As Form

Dim StrSql As String

' Связывает переменную с текущей базой данных.

Set dbsReport = CurrentDb

' Открывает запрос (объект QueryDef).

Set qdf = dbsReport.QueryDefs("Выработка сотрудников")

Год = InputBox("Отчет за год:", "Год", 1998)

StrSql =Left(qdf.SQL, InStr(qdf.SQL, "where") - 1) & " WHERE_ (((Year([ДатаИсполнения]))= " & Год & "))" & Right(qdf.SQL, Len(qdf.SQL) - InStr(qdf.SQL, "GROUP BY") + 1)

' Открывает набор записей

Set rstReport = qdf.OpenRecordset()

' Определяет количество столбцов в перекрестном запросе.

Здесь переменная intColumnCount должна быть определена на уровне модуля формы, т. к. она используется и другими процедурами данной формы.

Для событий Форматирование (On Format) верхнего колонтитула (листинг 13.1) и области данных отчета (листинг 13.2) необходимо определить процедуры, которые бы заполняли поля заголовков и значений и скрывали неиспользуемые поля.

Листинг 13.1. Процедура обработки события Форматирование верхнего колонтитула

Private Sub PageHeader()_Format(Cancel As Integer,_

FormatCount As Integer)

Dim intx As Integer

' Помещает заголовки столбцов в поля в верхнем колонтитуле.

Me("Head" + Format(0)) = rstReport(0).Name

For intX = 1 To intColumnCount - 1

Me("Head" + Format(intX)) =_

' Вводит в ближайшее свободное поле заголовок "Итого".

Me("Head" + Format(intColumnCount)) = "Итого"

' Скрывает пустые поля в верхнем колонтитуле.

For intX = (intColumnCount +1) То conTotalColumns - 1

Me("Head" + Format(intX)).Visible = False

В этой процедуре используется функция MonthRus, которая по порядковому номеру месяца выдает его название. Мы здесь не приводим текста этой функции, надеясь, что вы сможете написать ее сами conTotalColumns — константа, которая описана на уровне модуля и значение которой определяет максимальное число столбцов в отчете. В данном примере conTotalColumns равна 14.

Листинг 13.2. Процедура обработки события Форматирование области данных 1

Private Sub Detaill_Format(Cancel As Integer,_ FormatCount As Integer)

' Вводит значения в поля и скрывает пустые поля.

Dim intX As Integer

' Проверяет, что не достигнут конец набора записей.

If Not rstReport.EOF Then

'Помещает значения из набора записей в поля области данных

If Me.FormatCount = 1 Then

For intX = 0 To intColumnCount - 1

' Преобразует пустые значения в 0.

Me ("Col" + Format(intX)> =_

' Скрывает неиспользуемые поля в области данных.

For intX = intColumnCount + 1 То conTotalColumns - 1

Me("Col" + Format(intX)).Visible = False Next intX

' Переходит к следующей записи в наборе. rstReport.Move

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

Для события Печать (On Print) области данных отчета нужно создать процедуру, которая бы суммировала значения по строке отчета, выводила полученное значение в последнем столбце и, кроме того, добавляла эту сумму в массив итоговых значений по столбцам (листинг 13.3). Массив итоговых значений по столбцам IngRgColumnTotal и переменная IngReportTotal, определяющая общий итог, должны быть описаны на уровне модуля. Кроме того, они должны быть инициализированы, т. е. им нужно присвоить начальные значения 0. Это можно сделать в процедуре обработки события Загрузка (On Load) отчета.

Листинг 13.3. Процедура обработки события Печать области данных

Private Sub Detaill_Print(Cancel As Integer, PrintCount As Integer)

Dim intX As Integer

Dim IngRowTotal As Long

' Вычисляет сумму по строке и добавляет ее к итоговому значению. ' по столбцу и общему итогу

If Me.PrintCount = 1 Then IngRowTotal = 0

For intX = 1 To intColumnCount - 1

' Начиная со столбца 1 (первый столбец с перекрестными

' значениями), вычисляет сумму по строке.

lngRowTotal = IngRowTotal + Me("Col" + Format(intX))

' Добавляет итоговое значение для текущего столбца.

IngRgColurenTotal(intX) = IngRgColumnTotal(intX) +_

Me ("Col" + Format(intX))

' Заносит сумму по строке в поле в области данных. Me("Col" + Format(intColumnCount)) = IngRowTotal

' Прибавляет сумму по строке к общему итогу.

IngReportTotal = IngReportTotal + IngRowTotal

Процедура обработки события Печать (On Print) примечания отчета должна заполнить поля примечания итоговыми значениями по столбцам из массива IngRgColumnTotal (листинг 13.4).

Листинг 13.4. Процедура обработки события Печать примечания

Private Sub ReportFooter4_Print(Cancel As Integer,_

PrintCount As Integer)

Dim intX As Integer

' Помещает суммы по столбцам в поля примечания.

For intX = 1 То intColumnCount - 1

Me("Tot" + Format(intX)) = IngRgColumnTotal(intX)

' Помещает общий итог в поле примечания.

Me("Tot" + Format(intColumnCount)) = IngReportTotal

' Скрывает неиспользуемые поля в примечании отчета.

For intX = intColumnCount + 1 То conTotalColumns - 1

Me("Tot" + Format(intX)).Visible = False

Для корректной работы нужно еще добавить две небольшие процедуры в свойства отчета:

  • при закрытии отчета нужно закрыть базовый набор записей — обработка события Закрытие (On Close);
  • при отсутствии данных в базовом наборе записей нужно закрыть этот набор и прервать формирование отчета — событие Отсутствие данных (On No Data).

Ниже приведены обе эти процедуры (листинги 13.5 и 13.6).

Листинг 13.5. Процедура обработки события Закрытие отчета

Private Sub Report_Close()

On Error Resume Next

Листинг 13.6. Процедура обработки события Отсутствие данных отчета

Можно создать перекрестные ссылки на следующие элементы:

  1. Абзац
  2. Заголовок
  3. Закладка (познакомимся с понятием Закладка позже)
  4. Сноска (познакомимся с понятием Сноска позже)
  5. Концевая сноска (познакомимся с понятием Концевая сноска позже)
  6. Названия объектов

По окончании урока вы сможете:

Если вы правильно сделали документ по итогам Урока 30, то откройте этот документ. Но можете воспользоваться этой ссылкой: Скачайте документ тут. Откройте документ. Поскольку работы со стилями на этом уроке не будет, то я закрыла область задач Стили.

1. Перекрестная ссылка на Название таблицы

Перекрестная ссылка

Шаг 1. Поставим курсор в месте предполагаемой перекрестной ссылки:

Перекрестная ссылка

Перекрестная ссылка

На всякий случай я покажу, как выглядит эта кнопка в полноэкранном режиме:

Перекрестная ссылка

Появляется диалоговое окно:

Понять и запомнить!Перекрестные ссылки используются для навигации по документу.

Шаг 3. Устанавливаем в диалоговом окне Перекрёстная ссылка следующие значения:

Перекрестная ссылка

Кнопка Отмена превратилась в копку Закрыть.

Шаг 5. Нажимаем кнопку Закрыть

Перекрестная ссылка

Итак, в выбранном месте появилась постоянная часть и номер выбранного названия таблицы:

Пройдитесь по документу и в нужных местах расставьте перекрёстные ссылки на названия таблицы. Алгоритм действий такой:

Перекрестная ссылка

2. Перекрёстная ссылка на Название рисунка

Перекрестная ссылка

Шаг 1. Поставим курсор в месте предполагаемой перекрёстной ссылки:

Перекрестная ссылка

Шаг 5. Нажимаем кнопку Закрыть

Перекрестная ссылка

И вот в выбранном месте появилась постоянная часть и номер выбранного названия рисунка:

Пройдитесь по документу и в нужных местах расставьте перекрёстные ссылки на Названия рисунков. Алгоритм действий такой:

Перекрестная ссылка

Понять и запомнить!Перекрёстная ссылка делается на название объекта, а не на сам объект

Я старалась по всему тексту неустанно повторять: Название таблицы, Название рисунка. Если вы удалите рисунок, а название объекта оставите, то ссылка будет работать как ни в чём не бывало.

А теперь самое время посмотреть, как будет работать перекрёстная ссылка.

Поставим сразу сложную задачу. При работе с документом мы выяснили, то глава 5 на самом деле должна быть главой 2. Вспоминаем Урок 28, где мы познакомились с навигацией по заголовкам. Перейдите в начало документа (нажмите одновременно клавиши на клавиатуре Ctrl+Home)

Перекрестная ссылка

Шаг 1. Отрываем рабочую область Навигация. Лента Вид → группа команд Показ → флажковая кнопка Область навигации:

Перекрестная ссылка

Получаем такую картину:

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

Перекрестная ссылка

Шаг 2. В любом месте области задач Навигация щёлкаем ПМ и из контекстного меню выбираем команду Свернуть все:

Получаем такую картину:

Сразу работать стало удобнее.

Перекрестная ссылка

Шаг 3. Перемещаем в области Навигация Главу 5 на второе место в списке (нажимаем ЛМ на название Главы 5 и, не отпуская левую клавишу мышки, перетаскиваем Главу 5 на второе место после главы 1):

Вы обратили внимание, что, как только мы нажали ЛМ по главе 5 в области Навигация, то курсор сразу перескочил на главу 5?

Перекрестная ссылка

Но вместе с главой 5 мы перетащили рисунок, который сохранил свой номер.

Перекрестная ссылка

Шаг 4. Выделяем весь документ одновременным нажатием клавиш с клавиатуры Ctrl+A и нажимаем функциональную кнопку F9, в результате чего появляется уже знакомое окно:

Перекрестная ссылка

Теперь вы сможете:

Добавляйте названия объектов, меняйте главы местами, объединяйте документы в единый документ – вам теперь не страшно! Функциональная кнопка F9 вас никогда не подведёт!

Вам будет интересно:

Отступ

Урок 8. Интервал, выравнивание, отступ

Уровни структуры

Урок 44. Уровни структуры

Многоуровневый список

Урок 23. Многоуровневый список

12 Comments on Урок 31. Перекрестная ссылка в документе

Большое спасибо! Буду разбираться дальше.

Будут вопросы — обращайтесь.

почему так долго вопрос на модерации?

Приношу извинения, так как были проблемы с интернетом и вал работы. Если нашли сами ответ, то просто замечательно. Если я вас правильно поняла, то перекрестная ссылка была на конкретный текст, но вы не написали, что это был за текст: заголовок, название объекта или список. Если рядовой абзац, то в этом случае я отмечаю его закладкой и делаю в нужном месте перекрестную ссылку на закладку. При наведении курсора на перекрестную ссылку курсор меняет вид на указательный палец. Ctrl+щелчок переведёт вас к нужному тексту. Чтобы увидеть закладки, отметьте в Параметрах Word видимость закладок (урок 17). Аналогично можно сделать, используя гиперссылки (лента Вставка — Ссылки — Ссылка). Я использую эту возможность при создании интерактивных книг. Если у вас есть ещё вопросы, то обращайтесь в личку: я смогу вам ответить скриншотами. С уважением, Клименко Елена

Добрый день! В ближайшее время я опубликую урок на эту тему. Там есть несколько тонкостей. С уважением, Елена

Добрый день. Как вы поступаете с перекрестными ссылками на таблицы и рисунки приложений? Например. Приложение А. Таблица А.2. (см. таблицу А.2).
Используя автоматическую нумерацию таблиц и рисунков?

Читайте также: