Округление в access - Как обезопасить себя в кризис?
Invest-currency.ru

Как обезопасить себя в кризис?
48 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Округление в access

Округление в Аксессе

Для округления чисел в Access 2000 и более поздних версих есть встроенная функция Round().
Для более ранних версий используйте вот эту пользовательскую функцию округления Кена Гетца.

Встроенная функция

Используйте функцию Round() в источнике данных текстового поля или в вычисляемом поле запроса.

Скажем, у вас есть такое выражение в строке «Поле» в конструкторе запросов:
Налог: [Стоимость] * [СтавкаНалога]
Чтобы округлить до ближайшей копейки, используйте:
Налог: Round([Стоимость] * [СтавкаНалога], 2)

Округление вниз

Чтобы округлить все дробные цифры до ближайшего целого вниз, используйте Int():
Int([МоеПоле])

Все эти числа будут округлены вниз до 2: 2,1, 2,5, 2,8, and 2,99.

Чтобы округлить вниз до ближайшей копейки (напр. 10,2199 руб становятся 10,21 руб), умножьте на 100, округлите, и затем разделите на 100:
Int(100 * [МоеПоле]) / 100

Заметьте, что получается при округлении вниз отрицательных величин: Int(-2.1) дает -3, так как это и есть целое число снизу. Чтобы округлять по направлению к нулю, используйте Fix() вместо Int():
Fix(100 * [МоеПоле]) / 100

Округление вверх

Чтобы округлить вверх к ближайшему большему целому, воспользуйтесь способом, которым Int() округляет отрицательные числа:
— Int( — [МоеПоле])

Как показано выше, Int(-2.1) округляет вниз до -3. Поэтому такое выражение округляет 2,1 до to 3.

Чтобы округлить вверх до ближайшей копейки, умножьте на -100, округлите, и разделите на -100:
Int(-100 * [МоеПоле]) / -100

Округлить до ближайших 5 копеек

Чтобы округлить до ближайших 5 копеек, умножьте число на 20, округлите его, и разделите на 20:
Round(20 * [МоеПоле], 0) / 20

Подобным образом, чтобы округлить до ближайшего четвертака, умножьте на 4, округлите, и разделите на 4:
Round(4 * [МоеПоле], 0) / 4

Округлить до 1000 руб.

Функция Round() в Excel принимает отрицательные числа в качестве количества мест от запятой, напр. Round(123456, -3) округляет до 1000. К сожалению, аксессовская функция этого не поддерживает.

Чтобы округлить до ближайших 1000 руб., разделите на 1000, округлите, и умножьте на 1000. Пример:
1000 * Round([Стоимость] / 1000, 0)

Чтобы округлить до 1000 руб. вниз, разделите на 1000, получите целое число и умножьте на 1000. Пример:
1000 * Int([Стоимость] / 1000)

Чтобы округлить до верхней 1000 руб., разделите на 1000 и умножьте на -1 перед получением целой величины. Пример:
-1000 * Int( [Стоимость] / -1000)

Чтобы округлить в сторону нуля, используйте Fix() вместо Int().

Альтернативно, пользовательская функция Кена Гетца ведет себя в точности как упомнутая экселевская функция.

Зачем округлять?

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

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

Это также относится и к денежным полям. Аксесс отображает денежные поля округленными до ближайшей копейки, но хранит их значение до сотой доли копейки (4 знака после запятой.)

Банковское округление

Функция Round() в Аксессе использует «банковское округление». Когда последней значащей цифрой оказывается 5, она округляет до ближайшего четной цифры. Так, 0,125 округляется до 0,12 (2 четно), в то время как 0,135 округляется до 0,14 (4 четно.)

Главный смысл здесь — равенство: 1,2,3, и 4 округляются вниз. 6,7,8, и 9 — вверх. 0 не требует округления. Так, если 5 все время округлять вверх, вы получите «сдвинутые» результаты — 4 цифры округляются вниз, и 5 вверх. Чтобы избежать этого, «третий лишний» (5) округляется в соответствии с предыдущей цифрой, что сглаживает неравенство.

Если вы не хотите использовать банковское округление, возьмите функцию Кена Гетца (ссылка вверху.)

Ошибки плавающей запятой

Дробные величины компьютер обычно трактует как числа с плавающей точкой. Аксессовские поля типов Двойной точности (Double) или Одинарной точности (Single) относятся к такому типу. Тип «Двойной точности» дает около 15 знаков точности, сингл — 8 знаков (подобно ручному калькулятору).

Но эти числа являются приблизительными. Точно так же, как 1/3 требует бесконечного количества знаков в десятичной системе, большинство чисел с плавающей запятой не могут быть представлены точно в двоичной системе. Википедия объясняет проблему точности, с которой вы сталкиваетесь, оперируя числами с плавающей запятой.

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

Один из способов избежать подобных проблем — использовать числа с фиксированной запятой или мастшабированные числа.Тип данных «Денежный» в Аксессе является типом с фиксированной запятой: он всегда хранит 4 десятичных знака.

Например, откройте окно Immediate Window (Ctrl+G) и введите:
? Round(CCur(.545),2), Round(CDbl(.545),2)
Денежный тип (первый) возвращает 0,54, тогда как Двойной точности — 0,55. Денежный округляет корректно (к четной цифре 4); тип с плавающей запятой (Двойной точности) некорректно. Подобным образом, если вы попробуете 8,995, Денежный корректно округлит вверх (к четной цифре 0), в то время как тип Двойной точности округлит вниз (неверно.)

Денежный тип справляется только с 4 десятичными знаками. Используйте масштабируемый тип Действительный (Decimal), если вам нужно больше знаков после запятой.

Округление дат и времени

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

Функция ниже округляет дату/время до указанного количества секунд. Например, чтобы округлить до ближайшего получаса (30 * 60 seconds), используйте:
=RoundTime([МоеПолеДатаВремя], 1800)

Заключение

Для более детального технического объяснения теории округления в целом, см. статью Клайва Максфилда (Clive Maxfield) An introduction to different rounding algorithms.

Форматирование числового или денежного поля

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

В этой статье

Общие сведения о форматах чисел и денежных единиц

Чтобы создать настраиваемый формат, вы можете вводить различные символы в свойстве Format поля таблицы. Символы могут быть заполнителем (например, 0 и #), разделителями (например, точки и запятая), литеральными символами и цветами в зависимости от того, как вы хотите использовать форматирование. Просто запомните, что Access автоматически применяет пользовательские форматы, которые используются в поле таблицы, к элементу управления в форме или отчете, если он связан (связанный).

Вы можете задать форматы для четырех типов числовых значений: положительные, отрицательные, ноль (0) и NULL (не определено). Если вы хотите создать формат для каждого типа значения, необходимо сначала задать формат положительных значений, а затем — формат отрицательных значений, а в качестве параметров — значение null, а для последнего — формат. Кроме того, вы должны разделить формат точкой с запятой.

Пример настраиваемого форматирования: # # # # # # #;(#, # # # #, # #) [Red]; 0, 000; » Неопределенное

Читать еще:  Свойства полей базы данных access

Выводится как: 1, 234.568-1.234.568 = 0

Что такое форматирование

Знак решетки (#) — это заполнитель для цифр. Если значения отсутствуют, Access отображает пустое пространство. Для отображения нулей вместо пустых пробелов.
Например, чтобы отобразить 1234 в 1234,00, используйте цифру 0 в качестве заполнителя, например # # # #. 00.

Положительные значения с двумя десятичными знаками.

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

Нулевые значения в виде числа 0 всегда с двумя десятичными знаками.

Значения NULL в качестве слова «не определено».

Строка может состоять не более чем из четырех секций, а каждый раздел отделяется точкой с запятой (;). Если поле таблицы допускает значения NULL, четвертый раздел можно опустить.

Если первый раздел состоит из # # # # # #

Возвращает положительные значения.

1234,5678 отображается как 1 234,568

Этот формат использует запятую в качестве разделителя групп разрядов и точку в качестве десятичного разделителя. Если десятичные значения в записи превышают количество заполнителей в настраиваемом формате, Access округляет значения и отображает только количество значений, заданных форматом. Например, если поле содержит 3 456,789, но его формат определяет два десятичных знака, Access Округляет десятичное значение до 0,79.

Совет: Чтобы использовать формат с большим количеством десятичных знаков, добавьте больше заполнителей для десятичного разделителя, например #, # # #. # # #.

Если второй раздел — (# # # # # # #) [Red]

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

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

Если третий раздел входит в 0000,00

Определяет формат всех нулевых значений (0).

Если поле содержит нулевое значение, отображается 0000,00. Чтобы вместо числа отображался текст, используйте нулевые значения (они заключены в двойные кавычки).

Если четвертый раздел имеет значение «не определено»

Определяет, какие пользователи видят, когда запись содержит значение null. В этом случае пользователи видят слово «не определено».

Кроме того, можно использовать другой текст, например «null» или «* * * *». Окружающие символы с двойными кавычками обрабатываются как литералы и отображаются точно так же, как и введенные.

Применение встроенного формата

Access предоставляет несколько предопределенных форматов для числовых и денежных данных. Формат по умолчанию для отображения введенного числа.

Совет С помощью свойства DecimalPlaces вы можете переопределить число десятичных знаков для стандартного формата, заданного для свойства Format.

Откройте таблицу в режиме Конструктор.

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

В разделе Свойства поля щелкните стрелку в поле свойства Формат и выберите формат из раскрывающегося списка.

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

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

Дополнительные сведения можно найти в разделе распространение свойства поля.

Сохраните изменения и переключитесь в режим таблицы, чтобы узнать, соответствует ли формат вашим требованиям.

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

В форме или отчете

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

Откройте форму или режим макета отчета или конструктор.

Поместите указатель мыши в текстовом поле, указав число или денежную единицу.

Нажмите клавишу F4, чтобы открыть окно свойств.

Задайте для свойства Format один из предопределенных форматов даты.

Откройте запрос в режиме конструктора.

Щелкните поле даты правой кнопкой мыши и выберите пункт Свойства.

На странице свойств в списке свойств Формат выберите нужный формат.

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

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

Примеры встроенных форматов

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

Как сделать округление в access?

lame 6 (13635) 3 6 19 5 лет

Так как и везде не обязательно в именно Access, просто запомни, что для цифр существует целый тип данных и вещественных, целый не может хранить дробную часть и она будет округляться, конкретно что у Doctor_ на скрине Byte,Integer, Long Integer — это целые типы данных разница в них только в том что под эти типа выделяется разное количество памяти, byte только хранит числа от 0…255 больше не может, Integer уже до 32767, а другой еще больше, к вещественным типам относится Single, Double,(под Single выделяется меньше памяти, под Double, больше) другие там уже для других целей(только скрин описываю, на самом деле этих типов гораздо больше). Не какой магии.

Здравствуйте, уважаемые читатели.

До Access 2002 (или 2000) встроенной функции округления не было. Поэтому все пользовались самописными. Потом появилась функция Round() . Тут можно было вдохнуть с облегчением и избавится от собственной.

Как-то заказчик прислал мне скриншот с неправильными расчетами. Анализ кода показал, что функция Round() дала сбой и округляла следующим образом (проверял в окне отладки):
9.5 =10
8.5 = 8
7.5 = 8
6.5 = 6
5.5 = 6
4.5 = 4
3.5 = 4
2.5 = 2
1.5 = 2
0.5 = 0

Разбираться было лень. В результате заменил на собственное творение, т.к. это деньги:

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

Рис. 2.28. Панель функции ОКРУГЛ

Данная функция округляет число до указанного количества десятичных разрядов. Синтаксис ее следующий:

здесь число — это округляемое число, количество_цифр — это количество десятичных разрядов, до которого нужно округлить число.

Например, для операции извлечения корня в нашем примере формула округления будет иметь такой вид:

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

ПРИМЕР

На таможню приходит товар стоимостью 3 цента за единицу в количестве 1000 штук. Курс обмена — 29,31 руб./$, а все таможенные платежи (без учета НДС) составляют 29,45%. База начисления для таможенных платежей будет равна цене в долларах, умноженной на курс доллара и количество единиц товара:
$0,03 * 29,31 * 1000 = 879,30 руб.

При умножении базы начисления на ставку таможенного сбора получается сумма, которой быть не может (так как не существует пока в мире десятых и сотых долей копеек при перечислении их через банк):
879,30 руб. * 29,45% = 258,9539 руб.

Читать еще:  No access control allow origin header

Если и далее производить расчеты без округления размера таможенного платежа, то можно получить стоимость партии товара, которая равна стоимости товара плюс таможенные платежи:
879,30 руб. + 258,9539 руб. = 1138,25385 руб.

Таким образом, цена единицы товара будет следующей:
1138,25385 руб. : 1000 шт. = 1,138254 руб.

Полученные неправильные результаты представлены в табл. 2.1.

MS Access: Round Function

This MSAccess tutorial explains how to use the Access Round function with syntax and examples.

Description

The Microsoft Access Round function returns a number rounded to a specified number of decimal places. However, the Round function behaves a little peculiar and uses something commonly referred to as bankers rounding. So before using this function, please read the following:

The Round function utilizes round-to-even logic. If the expression that you are rounding ends with a 5, the Round function will round the expression so that the last digit is an even number.

In these cases, the last digit after rounding is always an even number. So, be sure to only use the Round function if this is your desired result.

Syntax

The syntax for the Round function in MS Access is:

Parameters or Arguments

Applies To

The Round function can be used in the following versions of Microsoft Access:

  • Access 2016, Access 2013, Access 2010, Access 2007, Access 2003, Access XP, Access 2000

Example

Let’s look at how to use the Round function in MS Access:

Example in VBA Code

The Round function can be used in VBA code in Microsoft Access.

In this example, the variable called LNumber would now contain the value of 210.7.

Example in SQL/Queries

You can also use the Round function in a query in Microsoft Access.

In this query, we have used the Round function as follows:

This query will return the UnitPrice rounded to 1 decimal place and display the results in a column called Expr1. You can replace Expr1 with a column name that is more meaningful.

The results would now be displayed in a column called RoundedValue.

Tip to Avoid Bankers Rounding:

If you want to avoid bankers rounding, you can create your own custom function as follows:

And then call the StandardRound function instead of using the Round function.

Frequently Asked Questions

Question: I read your explanation of the Round function using the round-to-even logic. However, I really need to round some values in the traditional sense (where 5 always rounds up). How can I do this?

Answer: You could always use the following logic:

If you wanted to round 12.65 to 1 decimal place in the traditional sense (where 12.65 rounded to 1 decimal place is 12.7, instead of 12.6), try adding 0.000001 to your number before applying the Round function:

By adding the 0.000001, the expression that you are rounding will end in 1, instead of 5. causing the Round function to round in the traditional way.

And the 0.000001 does not significantly affect the value of your expression so you shouldn’t introduce any calculation errors.

Порядок выполнения операций

Если о вашем выражении длинная строка вычислений, программа Access следует строгим правилам определения старшинства операций или, говоря математическим языком, учитывает,

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

1. Скобки (любые вычисления, заключенные в скобки, Access всегда выполняет первыми).

3. Возведение в степень.

4. Деление и умножение.

5. Сложение и вычитание.

Предположим, что вы хотите использовать поля QuantityInStock(количество на складе) и QuantityOnOrder(количество в заказах) для подсчета всех товаров, имеющихся в нали­чии и находящихся на пути к клиенту. Если вы не знаете правил старшинства операций, то можете сформировать следующее выражение:

TotalValue: [UnitsInStock] + [UnitsOnOrder] * [Price]

Проблема состоит в том, что программа Access перемножит поля QuantityOnOrderи Priceи добавит полученное значение к значению ноля QuantityInStock.Для устранения этой оплошности нужно применить скобки следующим образом:

TotalValue: ([UnitsInStock] + [UnitsOnOrder]) * [Price]

Теперь поля QuantitylnStockи QuantityOnOrdeгсуммируются, а затем умножаются на поле Priceдля получения общей суммы.

Подсказка

Вам нужно больше свободного места для набора длинного выражения? Можно расширить лю­бой столбец в Конструкторезапросов для увеличения видимой зоны, но в случае сложных вычислений этого все равно не хватит. Лучше щелкнуть кнопкой мыши в области Полеи на­жать сочетание клавиш + . Это действие распахивает на экране диалоговое окно Область ввода(Zoom), отображающее все содержимое в большом текстовом поле, разделен­ном на столько строк, сколько вам нужно. Когда просмотр или редактирование выражения за­вершены, щелкните мышью кнопку ОК,чтобы закрыть окно и сохранить изменения, или кнопку Отменадля отказа от них.

Выражения с текстовыми значениями

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

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

Для слияния текста применяется оператор амперсанд (&). Далее показано, как создать поле FullName(ФИО), в котором собрана информация из полей FirstNameи LastName:

FullName: [FirstName] & [LastName]

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

друг к другу, например, так: BenJenks. Лучше слить три фрагмента текста: имя, пробел и фамилию. Вот исправленная версия: FullName: [FirstName] & » » & [LastName]

Приведенное выражение создаст значение: Ben Jenks. Можно также поменять местами имя и фамилию и отделить их запятой, если вы предпочитаете указывать фамилию первой (например, Jenks, Ben) для облегчения сортировки: FullName: [LastName] & «, » & [FirstName]

Примечание

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

Вы даже можете применять амперсанд для сцепления текста с числовыми значениями. Если вы хотите, чтобы слегка бесполезный текст «The price is» появлялся перед каждым зна­чением цены, примените следующее вычисляемое поле:

Price: «The price is: » & [Price]

Функции запросов

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

Читать еще:  Как импортировать данные в access

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

Функции пригодятся для всех видов обработки данных в программе Access. Вы можете примять их в:

вычисляемых полях для включения данных в результаты ваших запросов;

условиях отбора для задания записей, отображаемых в запросе;

коде на языке Visual Basic, многоцелевой расширяемой системе для программы Access, с которой вы познакомитесь в части V.

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

Примечание

Функции — это встроенная часть версии языка SQL (см. разд. «Режим SQL» главы 6), приме­няемой в программе Access для обработки данных.

Применение функций

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

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

SalePrice: [Price] * 0.95

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

SalePrice: Round([Price] * 0.95, 2)

Технически функции Round ( ) требуется две порции информации или два аргумента. Первый — это число, которое округляется (вданном случае это результат вычисления Price * 0. 95), а второй — количество цифр, которое вы хотите оставить справа от деся­тичной точки (2). В результате получается значение, округленное до двух десятичных зна­ков, или 41.77.

Примечание

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

Часто задаваемый вопрос

Банковское округление

Похоже, программа 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 может оказаться слишком много замечательных вещей. Программа предлагает перечень из десятков различных функ­ций, связанных с решением разнообразных задач, некоторые из этих функций предназначе­ны для выполнения специализированных математических и статистических вычислений.

Примечание

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

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

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

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


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

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

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

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

Примечание

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

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector