Оглавление:
Как сделать чтобы access не округлял? — Разбираем подробно
lame 6 (13635)3619 5 лет
Так как и везде не обязательно в именно Access, просто запомни, что для цифр существует целый тип данных и вещественных, целый не может хранить дробную часть и она будет округляться, конкретно что у Doctor_ на скрине Byte,Integer, Long Integer — это целые типы данных разница в них только в том что под эти типа выделяется разное количество памяти, byte только хранит числа от 0…255 больше не может, Integer уже до 32767, а другой еще больше, к вещественным типам относится Single, Double,(под Single выделяется меньше памяти, под Double, больше) другие там уже для других целей(только скрин описываю, на самом деле этих типов гораздо больше). Не какой магии.
Теперь, возможно, вам приходит в голову мысль о том, что манипулировать числами и текстом можно более искусными способами — способами, которые предоставляют гораздо больше возможностей, чем простые арифметические операции. Вам может потребоваться округление чисел или преобразование строчных букв в прописные. Программа Access действительно предоставляет средства, называемые функциями и позволяющие поднять ваши выражения на более высокий уровень.
Функция — это реализация встроенного алгоритма, принимающая ваши данные, выполняющая вычисления и возвращающая результат. Разница между функциями и математическими операциями, как вы уже убедились на деле, заключается в том, что функции могут выполнять более сложные действия. У программы Access есть каталог с десятками разных функций, многие из которых реализуют такие приемы, которые вы даже не надеялись выполнить самостоятельно.
Функции пригодятся для всех видов обработки данных в программе Access. Вы можете примять их в:
¦ вычисляемых полях для включения данных в результаты ваших запросов;
¦ условиях отбора для задания записей, отображаемых в запросе;
¦ коде на языке Visual Basic, многоцелевой расширяемой системе для программы Access, с которой вы познакомитесь в части V.
Изучив как следует мир функций, вы поймете, что многие из них хорошо подходят для вычисляемых полей, но не для условий отбора. В следующих разделах вы увидите, где именно разумнее всего использовать каждую из них.
Примечание
Функции — это встроенная часть версии языка SQL (см. разд. «Режим SQL» главы 6), применяемой в программе Access для обработки данных.
Применение функций
Применяете ли вы простейшую или сложнейшую функцию, синтаксис — правила применения функции в выражении — остается неизменным. Для использования функции просто введите ее имя с последующими скобками. Затем внутрь скобок поместите все данные, которые нужны функции для выполнения ее вычислений (если это необходимо).
Для примера рассмотрим очень полезную функцию Round (), которая принимает число с дробной частью и убирает любые нежелательные позиции в дробной части. Эта функция — удобный способ приведения в порядок отображаемых значений вычисляемого поля. Вы оцените полезность функции Round (), если создадите выражение, подобное приведенному далее и вычисляющее цены, сниженные на 5%:
SalePrice: * 0.95
Примените это выражение к цене $43.97 и получите в результате 41.7715, что вряд ли будет выглядеть уместно на ценнике товара. Здесь пригодится функция Round (). Передайте ей неокругленное число и число знаков в дробной части, которое нужно сохранить:
SalePrice: Round( * 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. Это не единственный способ борьбы с систематическим отклонением (можно решать случайным образом, когда округлять, а когда нет), но это общепринятая практика в бухгалтерских расчетах и статистике.
Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.
23K
03 января 2007 года
AlPin
5 / / 03.01.2007
Проблема такая:
Дана таблица, а к ней форма ленточная с полями: Табельный номер, Фамилия, Дата принятия, Дата увольнения.
Как сделать так, чтобы Access проверял (когда заполняешь форму), что поле «Фамилия» не пустое и только потом позволял вводить в «Дата принятия» и так же с полем «Дата увольнения» куда допускается вводить данные только если поле «Дата принятия»заполнено.
Другими словами, чтобы не было так:
Поля «фамилия» пустые, а даты стоят
03 января 2007 года
koltaviy
816 / / 16.12.2004
Не та ветка форума..
Тебе в
Visual Basic ..
Код:
..
If (me.Поле_Имя.Value = «»)
MsgBox «Сначала введите имя»
Application.Undo
EndIf
..
Все это в событие ‘OnChange’ поля с датой!!
03 января 2007 года
shine
719 / / 09.06.2006
AlPin , на каком языке программирования вы пишете эту задачу?
04 января 2007 года
koltaviy
816 / / 16.12.2004
AlPin, на каком языке программирования вы пишете эту задачу?
По-моему вопрос не уместный..:confused: ?
04 января 2007 года
shine
719 / / 09.06.2006
По-моему вопрос не уместный..:confused: ?
А помоему вполне уместный. Достаточно много языков могут использовать Access в качестве базы данных. Visual Basic далеко не единственный. Топикстартеру лучше всего помогут примеры именно на том языке, на котором он пишет.
05 января 2007 года
koltaviy
816 / / 16.12.2004
Проблема такая:
…
Как сделать так, чтобы проверял (когда заполняешь форму)
…
Access — не только БД, но и СУБД..:)
23K
05 января 2007 года
AlPin
5 / / 03.01.2007
Не та ветка форума..
Тебе в
Visual Basic ..
Код:
..
If (me.Поле_Имя.Value = «»)
MsgBox «Сначала введите имя»
Application.Undo
EndIf
..
Все это в событие ‘OnChange’ поля с датой!!
Цитата:
Все это в событие ‘OnChange’ поля с датой!!
Не работает
На вопрос, на чем пишу — использую только то, что входит в MS Office (только Access и VBA)
05 января 2007 года
shine
719 / / 09.06.2006
На вопрос, на чем пишу — использую только то, что входит в MS Office (только Access и VBA)
Тогда скорее всего тебе действительно нужно поспрашивать в ветке форума связанной с Visual Basic. Или попроси модераторов чтобы они перенесли тему в Visual Basic, чтобы не начинать обсуждение с нуля.
05 января 2007 года
Оlga
2.2K / / 04.02.2006
Цитата:
Другими словами, чтобы не было так:
Поля «фамилия» пустые, а даты стоят
когда ты создаешь таблицу в Access, то в свойствах General для текстовых полей есть проперти Required, выстави его значение на Yes, и тогда при попытки перейти на новою строку, или выйти из таблицы с сохранением данных, выйдет сообщение об ошибке, что данная строка не может быть пустой.
23K
06 января 2007 года
AlPin
5 / / 03.01.2007
В таком случае Access будет обрабатывать ошибку и выдавать свое сообщение, я же хочу выдавать свое
14K
07 января 2007 года
Ivasik
10 / / 23.03.2006
Проблема такая:
Дана таблица, а к ней форма ленточная с полями: Табельный номер, Фамилия, Дата принятия, Дата увольнения.
Как сделать так, чтобы Access проверял (когда заполняешь форму), что поле «Фамилия» не пустое и только потом позволял вводить в «Дата принятия» и так же с полем «Дата увольнения» куда допускается вводить данные только если поле «Дата принятия»заполнено.
Другими словами, чтобы не было так:
Поля «фамилия» пустые, а даты стоят
Знаю как это сделать в среде программирования, вобщем я програмирую на Visual Basic 6, там когда подключаешь базу данных, можно написать код, который будет отслежывать это событие. Если надо по подробнее пиши…
07 января 2007 года
koltaviy
816 / / 16.12.2004
Да есть куча способов..
Один из хороших вариантов предложила OlgaKr.. Просто сообщение среды необходимо перехватывать!!.. и писать свое!!
Вот еще один вариант:
Код:
Private Sub MyName_Change()
If (Len(Me.MyName.Text) > 0) Then
Me.MyNameSecond.Locked = False
Else
Me.MyNameSecond.Locked = True
Me.MyNameSecond.Text = «»
End If
End Sub
23K
07 января 2007 года
AlPin
5 / / 03.01.2007
Спасибо, твой вариант не рабочий, я уже пытался сделать таким способом — выдается сообщение об ошибке при попытке внести изменения в поле: что-то типа невозможно получить доступ к данным поля, если на него не установлен фокус.
Пытался установить фокус, потом получить данные и проверить — не получилось, пытался вместо «Text» использовать «Value» — не получилось тоже.
Может я чего не так делал, не знаю, Access впервые открыл только месяц назад. У меня help на английском, книг нет, тяжело разобраться.
Может кто знает, где скачать можно русский help к Access-у?
07 января 2007 года
koltaviy
816 / / 16.12.2004
Спасибо, твой вариант не рабочий, я уже пытался сделать таким способом — выдается сообщение об ошибке при попытке внести изменения в поле: что-то типа невозможно получить доступ к данным поля, если на него не установлен фокус.
Пытался установить фокус, потом получить данные и проверить — не получилось, пытался вместо «Text» использовать «Value» — не получилось тоже.
Может я чего не так делал, не знаю, Access впервые открыл только месяц назад. У меня help на английском, книг нет, тяжело разобраться.
Может кто знает, где скачать можно русский help к Access-у?
Сорри, согрешил!!..:)
Недостаточно внимательно отнесся к твоему посту!..
Вот пример..
Как сказала OlgaKr установи в конструкторе таблицы:
1) «Обязателльное поле = Да»
2) «Пустые значения = Нет»
Обработчик ‘повесь’ на форму..
Вот примерчик:
23K
07 января 2007 года
AlPin
5 / / 03.01.2007
Спасибо большое. А надо было всего лишь обработку событий в самой форме сделать!
Тогда следующий вопрос:
Вот такая ленточная форма:
Код типа транспорта|Номер маршрута|Длина маршрута|Табельный номер водителя|Дата выхода|Дата возвращения
Нужно сделать так:
Если если есть одна запись с табельным номером, допустим, 1
и вводится вторая, уже другая запись с таким же табельным номером, то надо проверить, чтобы промежуток между датами не перекрывался (чтобы 1 и тот же рабочий (одинаковый табельный номер) не мог выполнять 2 работы в одно время)?
Т.е., чтобы проверялись условия:
Дата_выхода_2>Дата_возвращения_1 or Дата_возвращения_2
В данном разделе мы хотим рассказать о настройке параметров среды Access. При установке Microsoft Access они получают значения, определенные по умолчанию, однако в процессе разработки приложения вы можете переустановить их таким образом, чтобы они соответствовали особенностям конкретного приложения и были удобны для его пользователей.
Большинство параметров Access настраивается с помощью диалогового окна Параметры (Options), которое отображается при выборе команды Сервис, Параметры (Tools, Options). Все эти параметры сгруппированы по своему назначению и размещены на нескольких вкладках. На некоторые из этих параметров и вкладок мы ссылались в предыдущих главах книги (например, в гл. 11).
На рис. 14.1 представлена вкладка Вид (View) окна Параметры (Options) со значениями параметров, установленными по умолчанию.
Рис. 14.1. Диалоговое окно Параметры
Эта вкладка содержит следующие группы параметров.
Следующая вкладка Общие (General) (рис. 14.2) содержит ряд действительно общих параметров.
Рис. 14.2. Вкладка Общие диалогового окна Параметры
Рис. 14.3. Окно Параметры веб-документа
Вкладка Правка и поиск (Edit/Find) содержит параметры, которые используются при поиске, фильтрации и редактировании записей (рис. 14.4).
Рис. 14.4. Вкладка Правка и поиск диалогового окна Параметры
На вкладке Клавиатура (Keyboard) расположены параметры, которые определяют возможные перемещения курсора при вводе и редактировании данных в формах (рис. 14.5). По умолчанию определены следующие перемещения:
Рис. 14.5. Вкладка Клавиатура диалогового окна Параметры
На вкладке Режим таблицы (Datasheet) (рис. 14.6) находятся параметры, которые определяют вид таблиц: тип и размер шрифта, цвета символов и фона, наличие, отсутствие и цвет сетки, специальные эффекты оформления сетки, ширину столбцов. Это те параметры, которые заданы по умолчанию для всех таблиц. При желании их можно изменить для конкретной таблицы с помощью команд меню Формат (Format).
Параметры на вкладке Формы и отчеты (Forms/Reports) позволяют задать некоторые общие для форм и отчетов значения (рис. 14.7).
Рис. 14.6. Вкладка Режим таблицы диалогового окна Параметры
Рис. 14.7. Вкладка Формы и отчеты диалогового окна Параметры
Следующая вкладка Страницы (Pages) содержит параметры, касающиеся страниц доступа к данным (рис. 14.8).
Рис. 14.8. Вкладка Страницы диалогового окна Параметры
Вкладка Другие (Advanced) объединяет параметры, определяющие функционирование приложения в многопользовательском режиме или в режиме «клиент-сервер» (рис. 14.9). Назначение этих параметров будет объяснено ниже (см. гл. 16 и 17).
Кроме того, вы можете определить используемый по умолчанию формат файла базы данных: Access 2000 или Access 2002. По умолчанию создаваемые файлы базы данных будут иметь формат Access 2000. Это позволяет использовать их как в Access 2000, так и в Access 2002. Файлы, имеющие новый формат (Access 2002), доступны только в Access 2002.
Рис. 14.9. Вкладка Другие диалогового окна Параметры
Специальная вкладка Международные (International) (рис. 14.10) позволяет задать параметры, учитывающие использование языков, в которых текст пишется не слева направо, как мы привыкли, а справа налево, и календарь не григорианский, а юлианский. Можно, например, установить эти параметры таким образом, что если в одном предложении содержатся и арабский и европейский тексты, то при перемещении по арабскому тексту курсор будет перемещаться справа налево, а при перемещении по европейскому (русскому, английскому и т. д.) тексту — слева направо. Изменение же календаря рекомендуется делать сразу, как только создан новый файл базы данных, и потом этот параметр не менять.
Параметры, связанные с проверкой орфографии и автозамены, теперь тоже вынесены на отдельную вкладку Орфография (Spelling) (рис. 14.11). Это те же параметры, которые используются функцией проверки орфографии в Microsoft Word. Вы можете вызвать эту функцию, нажав кнопку в текстовом поле таблицы, запроса или формы.
Рис. 14.10. Вкладка Международные диалогового окна Параметры
Рис. 14.11. Вкладка Орфография диалогового окна Параметры
Кнопка Параметры автозамены (AutoCorrect Options) открывает диалоговое окно, в котором задаются параметры автозамены (рис. 14.12).
Рис. 14.12. Диалоговое окно Автозамена
Назначение параметров Автозамены ясно из их названий. Автозамена используется в данном случае для выполнения следующих функций.
Определение полей в окне конструктора Таблицы
С целью определения полей в Таблице, в конструкторе нам необходимо задать следующие поля:
Есть вкладка Общие, где расположены строки свойств поля, включая значение по умолчанию, максимально возможный размер, подпись – она показывается в заголовке столбца и т.д.
Подстановка – это вкладка, где можно в появляющемся списке свойства Тип элемента управления сделать выбор одного из представленных значений: Поле со списком, Список либо Поле.
Тип данных и имя поля
Каждое имеющееся в таблице поле должно названо своим уникальным именем. Это имя должно соответствовать соглашениям об именах объектов, которые действуют в Access, а именно представлять собой комбинацию из букв, пробелов, цифр, а также специальных знаков, исключая точку (.), квадратные скобки (), надстрочный (‘) и восклицательный (!) знаки. Нельзя, чтобы имя начиналось с пробела. Кроме того, оно не может содержать в себе управляющие символы, имеющие коды ASCII от 00 до 31. Наибольшая возможная длина имени равна 64 символам.
Тип данных представляет собой значения, которые необходимо вводить в поле, а также операции, которые этими значениями будут выполняться.
В Access можно использовать 9 типов данных. Чтобы посмотреть на список возможных типов, следует нажать на кнопку «Список». Рассмотрим все 9 типов подробнее.
Текстовый
Он является типом по умолчанию. Представляет собой цифры или текст, которые не принимают участие в расчетах. Максимально возможное количество символов в поле составляет 255 знаков. Это значение можно установить в свойстве Размер поля. В части поля, которая не используется, пустые символы не сохраняются.
Поле MEMO
Поле мемо в access это большой текст, к примеру примечание или описание. Может составлять до 65 535 знаков.
Числовой
Числа, которые применяются при математических вычислениях. Длина и тип могут быть определены в следующем свойстве: Размер поля. Само поле может быть следующих размеров: 1, 2, 4 или 8 байт. Возможет также вариант 16 байт, но лишь в том случае, если в свойстве Размер поля выбрать значение Код репликации.
Денежный
Представляют собой числовые данные и денежные значения, которые применяются в расчетах. Составляют до 15 знаков в целой части и до 4 – в дробной. Размер поля составляет 8 байт. Во время обработки числовых данных вычисления производятся с фиксированной точкой (это быстрее, чем для полей с плавающей точкой). Также предотвращается возможность округления. Принимая во внимание данные обстоятельства, рекомендуется к полям, где планируется хранить числовые данные с названной точностью, применять денежный тип.
Дата/время
Это значением времени или даты. Года при этом могут быть выбраны в промежутке от 100 до 9999. Длина поля составляет 8 байт.
Счетчик
Здесь для каждой новой записи в автоматическом режиме вводятся случайные или уникальные целые числа, которые по очереди возрастают на 1. Невозможно удалить или как-то исправить значения представленного поля. Для длинного целого размер поля составляет 4 байта, а для кода репликации он равен 16 байт. В поле по умолчанию вводятся последовательные значения. При этом таблица может иметь лишь одно поле подобного типа. Применяется для выявления уникального ключа таблицы.
Логический
Представляет собой логические данные, имеющие одно из возможных значений: Да/Нет, Вкл./Выкл., Истина/Ложь. Размер данного поля составляет 1 бит.
Поле объекта OLE
Какой-либо объект (к примеру, аудиозапись, рисунок, документ Word, таблица Excel или иные данные в двоичном формате), связанный либо внедренный в таблицу. Размер поля составляет не более 1 Гбайта, но при этом он также ограничивается имеющимся размером диска.
Гиперссылка
Является адресом гиперссылки, в который входит путь в локальной сети на жестком диске к определенному файлу. Также может быть адресом страницы в intranet (URL) или Internet. Он может представлять собой текст, который вводится в элементе управления или в поле, дополнительный адрес. При нажатии мышью на поле гиперссылки, осуществляется переход на конкретный документ, объект, web-страницу или иное место. Каждая из частей гиперссылки не может быть больше 2048 символов. Для полей типа Гиперссылка, MEMO и OLE индексирование и сортировка невозможны.
Мастер подстановки
При выборе данного типа активизируются мастера подстановок. Мастер подстановок в access 2007 строит список значений для поля, основываясь на полях из другой таблицы. В такое поле значение будет вводиться из списка. Таким образом, по факту, тип данных этого поля определяется за счет типа данных поля списка. Также может быть произведено определения поля, имеющего список постоянных значений.