Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
43
Добавлен:
16.03.2016
Размер:
20.6 Mб
Скачать

Часто задаваемый вопрос Банковское округление

Похоже, программа Access округляет числа неправильно. Как быть?

Вас может удивить то, что Access округляет число 21.985 до 21.98. Если вас учили ок­руглять до большего числа, числа заканчивающиеся цифрой 5, то вы считаете, что ре­зультат должен быть 21.99. Этот способ называют арифметическим округлением. Про­грамма Access не применяет арифметическое округление — она выбирает банковское округление, которое лучше в некоторых случаях.

Разница между арифметическим и банковским округлением заключается в трактовке цифры 5. Поскольку число 21.985 находится точно в середине, между числами 21.98 и 21.99, не просто решить, что с ним делать. При постоянном округлении числа с 5 на кон­це до большего числа вносится систематическое отклонение в итоги и средние значения. Поскольку вы округляете до большего чаще, чем до меньшего, любые итоги или среднее, которые вы вычисляете, получаются чуть больше, чем следовало бы.

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

Число 21.985 округляется до меньшего числа 21.98, а число 21.995 — до большего, 22. Это не единственный способ борьбы с систематическим отклонением (можно решать случайным образом, когда округлять, а когда нет), но это общепринятая практика в бух­галтерских расчетах и статистике.

Вложенные функции

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

Speed: Abs ([DistanceTravelled] / [TimeTaken])

Если полученный результат нужно округлить, можно поместить целиком все выражение внутрь скобок функции Round ( ):

Speed: Round (Abs([DistanceTravelled] / [TimeTaken]), 2)

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

Speed: Abs(Round([DistanceTravelled] / [TimeTaken], 2) )

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

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

Построитель выражений

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

Примечание

В этой книге описана далеко не каждая функция {если бы это было так, вам пришлось бы, сидя над книгой, бороться со сном). Но в следующих разделах вы познакомитесь с наи­более полезными функциями для работы с числами, тестом и датами. Для поиска дополни­тельных функций используйте Построитель выражений (Expression Builder) Если же вы предпочитаете интерактивный режим обучения, проверьте информативный Web-pecypc www.techonthenet.com/access/functions.

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

  1. Откройте запрос в Конструкторе.

  2. Щелкните правой кнопкой мыши поле, в которое вы хотите вставить выражение, и выберите команду Построить (Build).

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

После выбора командыПостроить на экране появляется окно Построителя выражений, отображающее текущее содержимое поля (рис. 7.3).

Рис. 7.3. Построитель выражений состоит из текстового поля в верхней части окна, в котором можно редактировать выражение, кнопок быстрой вставки знаков обычных операций (таких как +, -, / и *, если почему-либо вы не можете их найти на клавиатуре), и трехпанельного обозревателя в нижней части окна, который поможет найти нужные поля и функции

3. Вставьте или отредактируйте выражение.

У Построителя выражений есть два ускоряющих приема работы, которые вы, может быть, захотите испробовать. Можно вставлять имя без ввода с клавиатуры (рис. 7.4) и можно найти функцию с помощью обзора (рис. 7.5).

Примечание

Построитель выражений — универсальное средство создания выражений в вычисляемых по­лях и условиях отбора. Некоторые параметры имеют смысл только в одном из его назначений. Логические операторы, такие как символ равенства (=), And, Or, Not и Like, удобны для за­дания условий фильтрации (см. разд. "Построение условий отбора" главы 6), но бесполезны в вычисляемых полях.

Рис. 7.4. Для вставки имени поля щелкните дважды кнопкой мыши папку Таблицы в самом левом списке. Затем щелкните мышью вложенную папку, соответствующую нужной вам таблице. И, наконец, дважды щелкните кнопкой мыши имя поля в среднем списке для добавления его в ваше выражение. Этот прием рекомендуется только тем, кто любит щелкать кнопкой мыши

Рис. 7.5. Для поиска функции начните с двойного щелчка кнопкой мыши папки Функции в левом списке. Затем выберите вложенную папку Встроенные функции. (Другие варианты отображают любые пользовательские функции, которые вы добавили в вашу БД с помощью пользовательского кода VBA.) Далее выберите категорию функции в среднем списке. В правом списке показаны все функции в выбранной категории. Вы можете дважды щелкнуть кнопкой мыши функцию для вставки ее в выражение

Примечание

Когда вы вставляете имена полей в Построителе выражений, они записываются в более длинном формате с обязательным указанием имени таблицы. Вы увидите [Products] ! [Price] вместо просто [Price]. He волнуйтесь — для программы Access это одно и то же.

4. Щелкните мышью кнопку ОК.

Программа Access скопирует ваше новое выражение в ячейку Поле или Условие отбора.

Примечание

Когда вПостроителе выражений вставляется функция, программа добавляет заполнители (например, <number> и <precision>), на место которых нужно ввести аргументы. Замени­те этот текст нужными вам значениями.

Рис. 7.6. В справке функции Round () описываются ее назначение и два параметра. Второй параметр — количество знаков в дробной части — заключен в квадратные скобки, что означает необязательное значение. Пропустите его, и программа Access округлит значение до ближайшего целого числа. Слева приведен перечень функций, который позволяет просмотреть любую другую функцию Access и прочесть ее описание

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

Форматирование чисел

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

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

SalePrice: [Price] * 0.95

Даже если у поля Price не Денежный тип, вычисленные значения в поле SalePrice (продажная цена) выводятся как обычные числа (без знака валюты, разделителя тысяч и т. д.). Вы увидите значение 43.2 вместо желаемого $43.20.

Решить эту проблему можно, применив функцию Format ( ) для задания денежного формата вывода:

SalePrice: Format([Price] / 0.95, "Currency")

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

Хитрость применения функции Format () состоит в выборе текста, задаваемого в каче­стве второго аргумента для получения желаемого результата. В табл. 7.2. приведены воз­можные варианты.

Таблица 7.2. Варианты форматирования

Формат

Описание

Пример

Денежный

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

$1 433.20

Фиксированный

Отображает число с двумя десятичными знаками

1433.20

Основной

Выводит на экран число с двумя десятичными знака­ми и разделителями тысяч

1 433.20

Процентный

Отображает процентное значение (число, умноженное на 100, и со знаком процента). Выводит две цифры справа от десятичной точки

143320.00%

Экспоненциальный

Отображает число в научной нотации с двумя деся­тичными знаками

1.43Е+03

Таблица 7.2 (окончание)

Формат

Описание

Пример

Да/нет

Отображает Нет, если число равно 0, и Да, если число отлично от 0. Можно использовать аналогичные типы формата Истина/Ложь и Вкл/Выкл

Да

Соседние файлы в папке Управление данными