Вычисляемые поля в запросах Access. Создание вычисляемого поля в форме Продвинутый Excel: Почему я перестал пользоваться функцией V…

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

Рис. 1. Необходимо создать в имеющейся сводной таблице вычисляемое поле Средняя выручка за час , которое придаст новый смысл анализируемым данным

Скачать заметку в формате или , примеры в формате

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

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

Теперь посмотрите на рис. 5.1 и спросите себя: «Зачем понадобилось добавлять вычисляемые поля? Почему бы не использовать обычные формулы ячеек или не провести необходимые вычисления непосредственно в исходной таблице для получения требуемой информации?» Чтобы получить ответы на эти вопросы, рассмотрим различные методы, которые можно использовать при создании вычисляемого поля, показанного на рис.1.

Способ 1. Добавление вычисляемого поля в источник данных

Можно добавить вычисляемое поле в источник данных, как показано на рис. 2, позволив сводной таблице использовать это поле как стандартное поле данных. Если расположение информации на листе с источником данных позволяет это сделать, то какое решение может быть наилучшим. Кстати, добавление нового столбца потребует не просто обновить сводную таблицу, а изменить область, на которой основана сводная. Для этого кликните на сводной и пройдите по меню Анализ → Источник данных → Источник данных .

Я стараюсь превратить исходные данные в Таблицу (что сделано на рис. 2 и в прилагаемом Excel-файле). При этом, во-первых, выделяются заголовки, во-вторых, появляются кнопки с фильтрами, что часто полезно для исследования данных, в-третьих, строки окрашиваются через одну, и, наконец, самое важное, – при добавлении строк и столбцов не требуется менять область данных для сводной таблицы. В качестве таковой области указывается не прямоугольный диапазон, а имя Таблицы. В нашем случае – Источник (рис. 3).

Рис. 3. Формирование сводной на основе специального инструмента Excel– Таблица

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

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

Можно добавить вычисляемое поле рядом со сводной таблицей. На рис. 4 каждая ячейка в столбце Средняя выручка за час снабжена формулой, ссылающейся на сводную таблицу. Кстати, если при попытке сослаться на ячейку сводной таблицы у вас в формуле «вылазит» функция ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ, то вы не сможете «протащить» формулу. Чтобы преодолеть это затруднение ознакомьтесь с заметкой .

Рис. 4. При вводе формулы после создания сводной таблицы вы по сути добавляете вычисляемое поле, которое изменяется при обновлении самой сводной таблицы

Несмотря на то что этот метод обеспечивает добавление вычисляемого поля, которое обновляется при обновлении сводной таблицы, любые изменения в структуре сводной таблицы могут привести к тому, что формула станет бесполезной. Например, в результате перетаскивания поля Рынок сбыта в область ФИЛЬТРЫ списка полей сводной таблицы структура отчета изменяется, в результате чего в вычисляемом поле появляется сообщение об ошибке (рис. 5). Если же добавить еще одно поле в область сводной таблицы КОЛОННЫ, столбец Средняя выручка за час будет затерт.

Способ 3. Непосредственная вставка вычисляемого поля в сводную таблицу

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

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

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

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

Создание вычисляемого поля

Перед созданием вычисляемого поля необходимо открыть или сгенерировать сводную таблицу. В нашем примере используется сводная таблица, показанная на рис. 1, но без столбца D. Чтобы создать вычисляемое поле, активизируйте диалоговое окно Вставка вычисляемого поля . Для этого кликните на сводной таблице, чтобы активизировать группу контекстных вкладок Работа со сводными таблицами . Перейдите на вкладку Анализ , в группу Вычисления , щелкните на кнопке Поля, элементы и наборы и выберите в меню команду Вычисляемое поле (рис. 7).

На экране появится диалоговое окно Вставка вычисляемого поля (рис. 8). В верхней части диалогового окна имеются два текстовых поля: Имя и Формула . В этих полях следует задать имя вычисляемого поля и создать формулу, указав необходимые поля данных и математические операторы. Вычисляемому полю присвоено описательное имя Средняя выручка за час . Это имя следует выбирать таким образом, чтобы точно охарактеризовать тип выполняемой математической операции. По умолчанию текстовое поле Формула диалогового окна Вставка вычисляемого поля содержит выражение = 0. Перед вводом формулы следует удалить нуль. Выберите одно из полей в области Поля ; в нашем случае – Объем продаж и кликните Добавить поле . Название поле появится в строке Формула . Введите знак деления /, а затем выберите второе поле – Период продаж (в часах) . Кликните Добавить , а затем ОК для активизации нового вычисляемого поля.

В сводной таблице появится новое вычисляемое поле Средняя выручка за час (см. рис. 1). Только что в сводную таблицу было успешно добавлено новое вычисляемое поле. Теперь можно изменять настройки этого нового поля точно так же, как и параметры любого другого поля (например, имя поля, числовой формат или цвет).

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

Обратите внимание, что на рис. 8 формат введенной вами формулы похож на используемый в стандартной строке формул Excel. Основное различие состоит в том, что вместо использования строгих ссылок на ячейки или числовых значений вы ссылаетесь на поля данных сводной таблицы для присваивания значений аргументам, применяемым в расчетах.

Создание вычисляемых элементов

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

В сводной таблице, показанной на рис. 9, указывается общий объем продаж для определенных отчетных периодов (поле Отчетный период ). Представьте себе, что нужно сравнить средний объем продаж последних шести периодов со средним объемом продаж предыдущих семи периодов. Если быть более точным, то нам требуется определить среднее для периодов Р01–Р07 и сравнить его со средним для периодов Р08–Р13.

Поместите указатель в любую ячейку поля Отчетный период, перейдите на контекстную вкладку ленты Анализ в группу Вычисления, и щелкните на кнопке Поля, элементы и наборы . В открывшемся меню выберите команду Вычисляемый объект (рис. 10).

Откроется диалоговое окно (рис. 11). Обратите внимание на то, что в верхней части диалогового окна указано, с каким полем вы работаете. В данном случае это поле Отчетный период . Кроме того, список содержит все элементы поля Отчетный период . Присвойте вычисляемому элементу имя, а затем создайте формулу, указав необходимую комбинацию элементов данных и операторов, которые обеспечат правильный результат. Формула вводится в поле Формула , а необходимые элементы данных, применяемые в ней, выбираются в списке Элементы . Щелкните на кнопке ОК , и вычисляемый элемент добавится в сводную таблицу (рис. 12).

Рис. 11. Диалоговое окно Вставка вычисляемого элемента

Аналогичным образом создайте вычисляемый элемент, который будет представлять средний объем продаж для периодов Р08–Р13. После этого скройте отдельные отчетные периоды, оставив только два вычисляемых элемента. После небольшого форматирования наши вычисляемые элементы будут применяться для сравнения средних объемов продаж за предыдущие и последующие шесть месяцев (рис. 13).

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

Преимущества и недостатки вычислений в сводных таблицах

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

Приоритет выполнения операций. Как и в электронных таблицах, в формулах вычисляемых элементов и полей можно использовать любой оператор: +, –, *, /, %, ^ и т.п. Более того, как и в электронных таблицах, вычисления в сводных таблицах выполняются в соответствии с приоритетом операторов. При выполнении вычисления, в котором комбинируются несколько операторов, например (2+3) *4/50%, Excel оценивает выражение и проводит расчет в определенном порядке. Знание этого порядка убережет вас от многих ошибок.

Итак, порядок выполнения операций в Excel следующий:

  • обработка выражений в круглых скобках;
  • обработка диапазонов (:);
  • обработка пересечений (областей);
  • обработка объединений (;);
  • выполнение операции отрицания;
  • преобразование процентных значений (например, 50% преобразуется в 0,50);
  • возведение в степень (^);
  • умножение (*) и деление (/); эти операции имеют равный приоритет;
  • сложение (+) и вычитание (–); эти операции имеют равный приоритет;
  • объединение текстовых данных (&) эта операция называется также конкатенацией;
  • выполнение операций сравнения (=, <>, <=, >=).

Равнозначные операторы в одном выражении всегда выполняются в порядке следования (слева направо).

Рассмотрим простой пример. Как известно, выражение (2+3)*4 возвращает результат 20. Если же вы удалите скобки и оставите выражение 2+3*4, то Excel вычислит: 3*4 = 12 + 2 = 14.

Рассмотрим другой пример. Если вы введете в качестве формулы выражение 10^2, т.е. укажете возвести число 10 в квадрат, то программа вернет в качестве ответа значение 100. Если же вы введете выражение –10^2, то можете ожидать возврата значения –100. Однако Excel опять вернет значение 100. Причина в том, что программа выполняет операцию отрицания перед возведением в степень, т.е. значение 10 вначале преобразуется в –10, а результат выражения –10*–10 действительно равен 100. Использование круглых скобок в формуле –(10^2) гарантирует, что программа вначале выполнит возведение в степень и только потом операцию отрицания, вернув ожидаемый результат –100.

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

Функции рабочих листов. Можно применять любую функцию рабочего листа, не использующую в качестве аргументов ссылки на ячейки или именованные объекты. В действительности можно использовать любую функцию рабочего листа, не требующую обязательного применения ссылок на ячейки или именованные объекты. В эту категорию попадают такие функции, как СЧЁТ, СРЗНАЧ, ЕСЛИ, И, НЕТ и ИЛИ.

Константы. В вычислениях, выполняемых в сводных таблицах, можно использовать любые константы. Константы представляют собой статические значения, которые не изменяются во времени. Например, в следующей формуле число 5 является константой: [Продано единиц] *5. Несмотря на то что значение Продано единиц может изменяться на основе доступных данных, число 5 всегда будет одним и тем же.

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

Специальные правила для вычисляемых полей. Расчеты в вычисляемых полях всегда выполняются по отношению к итоговым суммам, а не к отдельным элементам данных. Попросту говоря, Excel всегда вычисляет поля данных, промежуточные суммы и итоговые суммы перед оценкой вычисляемого поля. Это означает, что ваше вычисляемое поле всегда применяется к итогам для исходных данных. Пример, показанный на рис. 14, демонстрирует, каким образом это может повлиять на анализ данных.

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

В каждом квартале вам нужно получить итоговые объемы продаж для каждого товара, для чего количество проданных единиц товара умножается на цену единицы этого товара. Если вы вначале просмотрите данные за первый квартал, то сразу же определите проблему. Вместо расчета суммы 220+150+220+594, которая равна 1184, сумма количества единиц товара умножается на сумму цен на товары, в результате чего возвращается неверное значение. К сожалению, эту проблему решить невозможно, но ее можно обойти. Исключите промежуточные и итоговые суммы из сводной таблицы, а затем вычислить новую итоговую сумму внизу за пределами сводной.

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

Управление вычислениями и их поддержка в сводных таблицах

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

Изменение и удаление вычислений в сводных таблицах. При изменении параметров вычислений или отсутствии необходимости в вычисляемом поле или вычисляемом элементе можно открыть соответствующее диалоговое окно, чтобы изменить или удалить вычисление. Активизируйте диалоговое окно Вставка вычисляемого поля или Вставка вычисляемого элемента (см. описание к рис. 7 и 10) и выберите в нем раскрывающийся список Имя (рис. 15).

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

Рис. 16. Откройте диалоговое окно Порядок выполнения вычислений

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

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

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

Заметка написана на основе книги Джелен, Александер. . Глава 5.

Слово Таблица написано с большой буквы, так как это не просто таблица, а отдельный инструмент Excel.

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

Во втором случае форма строится на базе таблицы. В форме создается новоее поле, в котором в качестве источника данных указывается выражение, например, = [Цена за единицу]*Количество. При ссылке на поля в выражениях обязательно использование квадратных скобок, если название поля состоит более чем из одного слова. Ввод выражения допускается прямо в элемент управление (поле), если оно короткое и длина поля это допускает. В противном случае выражение вводится в ячейку свойства Данные окнаСвойства. При этом можно воспользоваться построителем выражений. Если выражение не помещается в ячейке свойства, нужно нажать клавиши + и открыть окно Область ввода . При необходимости следует задать формат поля при выводе на экран.

6. Создание кнопочной формы

    Выберите команду меню Сервис/Служебные программы/Диспетчер кнопочных форм.

    В диалоговом окне, где запрашивается, нужно ли создавать кнопочную форму нажмите ДА .

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

    Открывается диалоговое окно Изменение страницы кнопочной формы . Откорректируйте название формы.

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

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

    Добавьте кнопки для всех форм и отчетов, структурировав их по типу.

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

    Настройте приложение, чтобы Главная кнопочная форма открывалась при открытии БД. Для этого воспользуйтесь командой менюСервис/Параметры запуска .

ПРИМЕР:

Рис. 28. Кнопочная форма верхнего уровня

Лабораторная работа 3 создание запросов

Цель работы - получить практические навыки разработки запросов к БД.

Задание:

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

Последовательность выполнения работы

1. Создание запроса на выборку по одной таблице с помощью Конструктора запросов

    В окне БД щелкните на закладке Запросы .

    Щелкните на кнопку Создать .

    В окне Новый запрос выберите Конструктор и нажмите кнопку OK .

    В окне Добавление таблицы выберите из окна списка таблицу (или запрос), по которой будет строиться запрос и нажмите кнопкуДобавить. Закрыть текущее окно. Далее на экране появиться окно Конструктора запросов .

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

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

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

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

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

    В бланке запроса в строке Условие отбора и в строке Или укажите условия выборки из базы данных. Условия представляют собой логические выражения.

Над условиями отбора, расположенными в одной строке, выполняется логическая операция AND . Несколько условий отбора по одному полю можно задать одним из двух способов: ввести все условия в одну ячейку строки Условие отбора , соединив их логическим оператором OR , либо ввести каждое условие в отдельную ячейку строки Или . Переход на следующую строку области ячеек ИЛИ по клавише <>. Выражения в ячейку бланка запроса вводятся с клавиатуры или для их создания используется Построитель выражений , который запускается командой Построить из контекстного меню, связанного со строкой Условие отбора (или можно нажать кнопку Построить на панели инструментов Access ).

    Посмотрите результаты запроса, нажав кнопку Запуск (кнопка с изображением восклицательного знака) или кнопку Вид на панели инструментов.

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

Запросы, созданные в режимах Конструктора и Мастера , генерируют команды на языке SQL. Можно просмотреть эти команды, выбрав из меню Вид опцию режим SQL .

ПРИМЕР:

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

Рис. 10. Конструктор запроса с условием

Рис. 11. Результат запроса с условием

2. Внутреннее соединение по одному полю

    Выберите вкладку Запросы окна БД, щелкните кнопку Создать. Откроется диалоговое окно Новый запрос . Выберите опцию Конструктор .

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

    Заполните бланк запроса.

    Щелкните на кнопке Запуск или Вид , чтобы отразить результаты запроса.

ПРИМЕР:

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

Рис. 12. Конструктор многотабличного запроса

Рис. 13. Результат многотабличного запроса

3. Внешние соединения

    Выполните пункты 1- 3 раздела Внутреннее соединение по одному полю.

    Установите связь между таблицами, если ранее она не была прописана в Схеме БД .

    Щелкните на линии объединения полей, чтобы выделить ее.

    Выберите из меню команды Вид опцию Параметры объединения. Отобразится диалоговое окно Параметры объединения .

    Выберите тип объединения, щелкните по кнопке OK . После этой операции на линии объединения появится стрелка, указывающая тип соединения.

4. Включение в бланк запроса групповой операции

    Щелкните по кнопке Групповые операции , знак на панели инструментов Конструктора запросов . В бланке запроса над строкой Сортировка появится строка Групповая операция .

    Замените в строке Групповая операция установку Группировка на требуемую групповую операцию , выбрав ее из поля со списком: Sum , Avg , Count , М in , Max , StDev , Var , First , Last , Expression (выражение), Where (условие), Group by (группировка).

Выражение позволяет ввести вместо названия поля в ячейку какое-либо выражение, например, для вычисления размаха значений по некоторому столбцу Х: Max ([ X ]) – Min ([ X ]).

Условие показывает, что это поле будет использоваться для задания условия отбора записей. Само условие выбора записывается в ячейку строкиУсловие отбора .

3. Выполните запрос.

ПРИМЕР:

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

Рис. 14. Конструктор запроса с группированием записей

Рис. 15. Результат запроса с группированием записей

5. Включение в бланк запроса вычисляемых полей

    Конструктора запросов .

    Щелкните в строке Поле по пустому столбцу бланка запроса. Введите имя столбца, затем двоеточие, за ним – выражение. Для ввода выражения щелкните по кнопке Построить , чтобы воспользоваться Построителем выражений .

    В верхней части Построителя выражений в области ввода создайте выражение.

    В столбце вычисляемого поля переместите курсор в строку Групповая операция и выберите в раскрывающем списке Выражение (если не выбрать опцию Выражение , при выполнении запрос открывает диалоговое окно Введите значение параметра или возвращает сообщение об ошибке).

    Запустите запрос.

ПРИМЕР:

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

Рис. 16. Конструктор запроса с вычисляемым полем

Рис. 17. Результат запроса с вычисляемым полем

6. Создание параметрического запроса

    Создайте запрос на выборку в режиме Конструктора запросов.

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

    Выберите из меню Запрос опциюПараметры . В диалоговом окне Параметры запроса в левом столбце введите в квадратных скобках параметр, совпадающий с параметром в бланке запроса Конструктора запросов (параметр можно скопировать из бланка запроса). В правом столбце укажите тип данных: нажмите клавишу , из списка выберите тип данных.

    Запустите запрос на исполнение. Access отобразит окно Введите значение параметра ,в которое введите требуемое Вам значение параметра и нажмите кнопку OK .

5. Запустите запрос на исполнение.

ПРИМЕР:

Выбрать список продуктов, срок годности которых превышает заданное значение.

Рис. 18. Конструктор параметрического запроса

Рис. 19. Ввод значения срока годности продукта

Рис. 20. Результат параметрического запроса

7. Создание перекрестных запросов

1. Создайте с помощью Конструктора новый запрос и включите в него необходимые таблицы.

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

3. Выберите из меню командуЗапрос/Перекрестный. Заголовок Конструктора изменится сЗапрос 1: на выборку наЗапрос 1: перекрестный запрос . В бланке запроса отобразится строкаПерекрестная таблица .

4. Для полей, которые будут строками перекрестной таблицы, откройте раскрывающийся список строки Перекрестная таблица выберите опцию Заголовки строк. Каждое поле, являющееся заголовком строки должно иметь в строке Групповая операция установку Группировка.

5. Для полей, которые будут столбцами перекрестной таблицы, в зависимости от запроса, возможны следующие действия:

в строке Перекрестная таблица выбрать опцию Заголовки столбцов ив строке Групповая операция установку Группировка, или в строкеГрупповая операция Условие, в строках Условие отбора и ИЛИ записать логическое выражение.

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

7. Запустите запрос на исполнение.

ПРИМЕР:

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

Рис. 21. Конструктор перекрестного запроса

Рис. 22. Результат перекрестного запроса

8. Запрос на создание таблицы

Для того, чтобы создать таблицу из результатов запроса, использовавшегося для отбора записей в связанных таблицах, выполните следующие действия:

    Сделайте копию запроса на выборку записей из таблиц (или создайте новый).

    Откройте созданный запрос в режиме Конструктора, выделив его имя в списке запросов в окне БД и нажав кнопку Конструктор .

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

    Нажмите кнопку ОК . Запрос на выборку преобразуется в запрос на создание таблицы.

    Запустите запрос двойным щелчком мыши по имени запроса в окне БД. Перед выполнением запроса появляется сообщение, которое предупреждает, что в новую таблицу будут внесены изменения (несмотря на то, что она еще не создана).

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

    Раскройте вкладку Таблицы в окне БД; в списке должна появиться новая таблица.

9. Запрос на обновление записей

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

    Выберите в меню команду Запрос/Обновление . В бланке запроса строки Сортировка и Вывод на экран будут заменены строкой Обновление .

    В строке Обновление задайте выражение, которое представляет собой новое значение для текущего поля.

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

    Выполните запрос. Проконтролируйте правильность обновления записей.

ПРИМЕР:

Обновить стоимость продуктов, количество которого превышает 500 единиц, установив ее на уровне 90% от первоначальной стоимости.

Рис. 23. Конструктор запроса на обновление

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

    Создайте копию таблицы, в которой предполагается обновление записей.

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

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

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

    Откройте окно базы данных . Выберите вкладку Таблицы .

    Активизируйте созданный запрос на выборку и перейдите в режим Конструктора запроса .

    Выберите в меню команду Запрос/Удаление . В бланке запроса строки Сортировка и Вывод на экран будут заменены строкой Удаление .

    Щелкните на кнопке Запуск панели инструментов. Появится окно сообщений, запрашивающее подтверждение удаления записей.

Удаление записей в таблице “один” , для которых в таблице “многие” существуют связанные записи, нарушает правило целостности данных. Поэтому опция целостности данных, установленная для связи между таблицами, может препятствовать удалению записей. Следует применить каскадное удаление.

ПРИМЕР:

Рис. 24. Конструктор запроса на удаление

11. Запрос на добавление записей

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

    Выберите вкладку Запросы окна БД, щелкните кнопку Создать. Откроется диалоговое окно Новый запрос . Выберите опцию Конструктор.

    В окне Добавление таблицы выберите таблицу, из которой будут браться данные.

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

    Выберите команды меню Запрос/Добавление . Появится окно Добавление , где необходимо указать имя таблицы, в которую предполагается добавлять данные, и какой БД она принадлежит. Если БД не текущая, а какая-либо другая, то придется указать полное имя файла, содержащего БД.

В бланке запроса после строки Сортировка будет включена строка Добавление, в которой требуется указать те поля таблицы, куда добавляются данные. Если имена полей совпадают A с cess автоматически вставит в строку Добавление имена полей.

    Запустите запрос на исполнение. Посмотрите как изменилась таблица, в которую внесены новые строки.

Если в запросе на Добавление есть поля типа Счетчик , то работать с такими полями можно двумя способами:

    не включать поля типа Счетчик в поля, которые должны быть добавлены; тогда в таблице, куда добавляются данные, продолжится нумерация последовательности данных, т.е. если имеется таблица служащих с номерами от 1 до 100 и добавить к ней новые записи, то их нумерация начнется с 101 номера;

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

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

Теперь, когда в нашем распоряжении имеется сводная таблица, наступило время для создания, вычисляемого поля. Чтобы создать вычисляемое поле, активизируйте диалоговое окно Вставка вычисляемого поля (Insert Calculated Field).

Чтобы открыть его, на контекстной вкладке ленты Параметры (Options), выбранной в группе контекстных вкладок Работа со сводными таблицами (PivotTable Tools), перейдите в группу Вычисления (Calculations), щелкните на кнопке Поля, элементы и наборы (Fields, Items & Sets) и выберите в раскрывающемся меню команду Вычисляемое поле (Calculated Field), как показано на рис. 5.7.

На экране появится диалоговое окно Вставка вычисляемого поля (Insert Calculation Field), как показано на рис. 5.8.

В верхней части диалогового окна имеются два текстовых поля: Имя (Name) и Формула (Formula). В этих полях следует задать имя вычисляемого поля и создать формулу, указав необходимые поля данных и математические операторы. На рис. 5.9 показано, что вычисляемому полю присвоено описательное имя Средняя выручка за час. Это имя должно точно характеризовать тип выполняемой математической операции.

Далее перейдите к списку Поля (Fields) и дважды щелкните на поле Объем продаж. Введите символ косой черты /, чтобы указать программе Excel, что вы будете делить значение поля Объем продаж на другой элемент.

По умолчанию текстовое поле Формула диалогового окна Вставка вычисляемого поля содержит выражение = 0. Перед вводом собственной формулы следует удалить нуль.

С этого момента диалоговое окно должно выглядеть так, как показано на рис. 5.10.

Рис. 5.10. Начните ввод формулы со значения = ‘Объем продаж’/

Закончите ввод формулы, дважды щелкнув на поле Период продаж (в часах). Готовая формула показана на рис. 5.11.

Рис 5.11. Полная формула = ‘Объем продаж’/’Период продаж (в часах)’ отображает требуемое вычисляемое поле

Щелкните на кнопке Добавить (Add), а затем - на кнопке ОК для активизации нового вычисляемого поля. Как видно на рис. 5.12, в результате вы получите вычисляемое поле внутри сводной таблицы.

Обратите внимание на то, что после создания нового поля Средняя выручка за час оно добавляется в список полей.

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

Означает ли это, что вы добавили столбец в источник данных? Нет. Вычисляемые поля похожи на элементы Промежуточная сумма (Subtotal) и Общая сумма (Grand Total) сводной таблицы, задаваемые по умолчанию, так как все они являются математическими функциями, которые выполняют перерасчет данных при изменении или обновлении сводной таблицы. Вычисляемые поля просто имитируют строго заданные поля в источнике данных. Можете перетаскивать их, изменять настройки полей, а также использовать вместе с другими вычисляемыми полями.

Взгляните внимательно на рис. 5.11. Обратите внимание на то, что формат введенной вами формулы похож на используемый в стандартной строке формул Excel. Очевидное различие состоит в том, что вместо использования строгих ссылок на ячейки или числовых значений вы ссылаетесь на поля данных сводной таблицы для определения аргументов, применяемых в расчетах. Если вы уже работали с формулами в Excel, то быстро усвоите концепции создания вычисляемых полей.

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

Чтобы добавить к отчету вычисляемое поле "Сумма":

  1. Откройте отчет "Товары на складе" в режиме Конструктора.
  2. На панели элементов нажмите кнопку Надпись (Label) и поместите новую надпись справа от надписи "На складе" (Units in Stock) в разделе верхнего колонтитула. Введите в качестве текста надписи слово "Сумма" (Sum).
  3. Чтобы создать вычисляемое поле "Сумма" (Sum), нажмите кнопку Поле (Text Box) на панели элементов и добавьте текстовое поле справа от текстового поля "НаСкладе" (UnitsInStock) в разделе данных. Удалите метку нового текстового поля.
  4. Щелкните внутри текстового поля и введите в качестве его значения выражение:

    = [НаСкладе]* [Цена] (= * ).

    Откройте окно свойств поля, дважды щелкнув по нему, и на вкладке Макет (Format) в поле со списком свойства Формат поля (Format) выберите значение Денежный (Currency).

Замечание

Ввести выражение в текстовое поле можно несколькими способами: выделите его и нажмите комбинацию клавиш +, чтобы войти в режим редактирования содержимого поля, или сделайте двойной щелчок по полю для отображения диалогового окна Свойства (Properties), а затем введите выражение как значение свойства Данные (Source).

Рис. 6.27.

  1. Повторите шаги 3 и 4 для того, чтобы создать текстовое поле в разделе примечаний группы "Категория" (Category), но в качестве выражения для вычисления промежуточного значения следует ввести: =Sum([НаСкладе] * [Цена]) (=Sum( * )). Нажмите кнопку Полужирный (Bold) на панели форматирования, чтобы установить полужирный шрифт для текста в новом поле. Откройте диалоговое окно Свойства (Properties) и раскройте в нем вкладку Другие (Other), в поле Имя (Name) введите имя текстового поля "Сумма" (Sum). Затем раскройте вкладку Макет (Format) и в поле со списком свойства Формат поля (Format) выберите значение Денежный (Currency).
  2. Поскольку ширина области данных нашего отчета увеличилась, уменьшите ширину полей страницы, чтобы все поля поместились на одной странице. Для этого выберите команду Файл, Параметры страницы (File, Page Setup) и задайте вместо ширины левого и правого полей, заданных по умолчанию, значение 10 мм (см. разд. "Просмотр и печать отчетов" в этой главе).
  3. Нажмите кнопку Вид (View) на панели инструментов Конструктор отчетов (Report Design), чтобы оценить результаты своей работы. Отчет будет выглядеть так, как показано на рис. 6.27. К прежним данным добавился крайний правый столбец со значениями стоимости каждого товара в имеющемся количестве на складе и промежуточных итоговых сумм по стоимости товаров для каждой категории.

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

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

Задача 1. В таблице ТОВАР имеются поля ЦЕНА и СТАВКА_НДС, вычислите цену с учетом НДС и сравните ее с полученной в вычисляемом поле таблицы Цена с НДС.

  1. Создайте в режиме конструктора запрос на выборку для таблицы ТОВАР. Перетащите в бланк запроса поля НАИМ_ТОВ, ЦЕНА, СТАВКА_НДС и Цена с НДС (рис. 4.6).
  2. Для подсчета цены с учетом НДС создайте вычисляемое поле, записав в пустой ячейке строки Поле (Field) выражение [ЦЕНА]+[ЦЕНА]*[СТАВКА_НДС].
  3. Для отбора записей со значением выше 5000 в вычисляемом поле в строку Условие отбора (Criteria) введите > 5000
  4. После ввода выражения система по умолчанию формирует имя вычисляемого поля Выражение 1, которое становится заголовком столбца в таблице с результатами выполнения запроса. Это имя вставится перед выражением [ЦЕНА]+[ЦЕНА]*[СТАВКА_НДС]. Для каждого нового вычисляемого поля в запросе номер выражения увеличивается на единицу. Имя вычисляемого поля отделяется от выражения двоеточием. Для изменения имени установите курсор мыши в вычисляемом поле бланка запроса и нажмите правую кнопку мыши. В контекстно-зависимом меню выберите Свойства (Properties) поля и в строку Подпись (Caption) введите новое имя поля ― Цена с НДС1 . Теперь в таблице с результатами выполнения запроса в заголовке вычисляемого столбца отобразится это имя. Имя поля может быть исправлено также непосредственно в бланке запроса.
  5. Для отображения результата выполнения запроса щелкните на кнопке Выполнить (Run) в группе Результаты (Results). Вычисляемое поле таблицы и за-проса имеют одинаковые значения.
  6. Измените в одной из записей запроса цену товара. Значения в обоих вычисляемых полях будут моментально пересчитаны.
  7. Для формирования сложного выражения в вычисляемом поле или условии отбора целесообразно использовать построитель выражений. Построитель позволяет выбрать необходимые в выражении имена полей из таблиц, запросов, знаки операций, функции. Удалите выражение в вычисляемом поле и используйте построитель для его формирования.
  8. Вызовите построитель выражений (Expression Builder), нажав кнопку Построитель (Builder) в группе Настройка запроса (Query Setup) ленты Конструктор (Design), или выбрав Построить (Build) в контекстно-зависимом меню. Курсор мыши должен быть установлен предварительно в ячейке ввода выражения.
  9. В левой части окна Построитель выражений (Expression Builder) (рис. 4.7) выберите таблицу ТОВАР, на которой построен запрос. Справа отобразится список ее полей. Последовательно выбирайте нужные поля и операторы, двойным щелчком вставляя в выражение. Выражение сформируется в верхней части окна. Обратите внимание, построитель перед именем поля указал имя таблицы, которой оно принадлежит, и отделил его от имени поля восклицательным знаком.
  10. Завершите процесс построения выражения в вычисляемом поле, щелкнув на кнопке ОК.
  11. Сохраните запрос под именем ― Цена с НДС и закройте его.
  12. Выполните сохраненный , выделив его в области навигации и выбрав в контекстном меню команду Открыть (Open).


Задача 2. В вычисляемых полях и условиях отбора можно использовать встроенные функции. В Access определено более 150 функций.
Пусть необходимо выбрать все накладные, по которым производилась отгрузка в заданном месяце. В НАКЛАДНАЯ дата отгрузки хранится в поле ДАТА_ОТГ с типом данных Дата/время (Date/Time).

  1. Создайте в режиме конструктора запрос на выборку для таблицы НАКЛАДНАЯ. Перетащите в бланк поля НОМ_НАКЛ и КОД_СК (рис. 4.8).
  2. Создайте вычисляемое поле в пустой ячейке строки Поле (Field), записав туда одно из выражений: Format([НАКЛАДНАЯ]![ДАТА_ОТГР];»mmmm») ― эта функция возвратит пол-ное название месяца
    или Format([НАКЛАДНАЯ]![ДАТА_ОТГР];»mm») ― эта функция возвратит номер месяца.
  3. Для отбора накладных, выписанных в заданном месяце, в вычисляемом поле в строку Условие отбора (Criteria) введите название месяца, например март (рис. 4.8), или номер месяца, например 3 в соответствии с параметром в функции Format.
  4. Выполните запрос, нажав кнопку Выполнить (Run) в группе Результаты (Results) на вкладке ленты Работа с запросами | Конструктор (Query Tools | Design).
  5. Запишите в вычисляемом поле функцию Month(НАКЛАДНАЯ!ДАТА_ОТГ), и убедитесь, что эта функция возвращает выделенный из даты номер месяца.
  6. Для выборки всех строк, относящихся ко второму кварталу, в строку Условие отбора (Criteria) введите оператор Between 4 And 6, определяющий, попадает ли значение выражения в указанный интервал.
  7. Запишите в вычисляемом поле выражение MonthName(Month(НАКЛАДНАЯ!ДАТА_ОТГ)) и убедитесь, что функция MonthName преобразует номер месяца в его полное на-звание.


Для закрепления смотрим видеоурок.