Практические занятия для опытных пользователей. Улучшенные числовые форматы

Улучшенные числовые форматы

Истинные педанты не будут довольны вариантами, перечисленными в табл. 7.2. Им ну­жен полный контроль количества десятичных знаков в числе. Один из возможных вари­антов — использовать функции FormatCurrency( ), FormatPercent ( ) и FormatNumber ( ) (в зависимости от необходимости вывода значения как денежного, процентного или обычного числового). В этих функциях в качестве первого аргумента задается число, которое нужно отформатировать, а в качестве второго — число десятич­ных знаков, которое нужно сохранить.

Для более полного контроля можно определить собственный формат, точно описы­вающий то, что вы хотите получить, и затем применить его в функции Format (). В данной книге не рассматриваются пользовательские числовые форматы, по вы мо­жете посмотреть дополнительную информацию в справочной системе программы Ac­cess (см. рис. 7.6).

 

 

Дополнительные математические функции

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

Таблица 7.3. Функции для числовых данных

Функция Описание Пример Результат
Sqr ( ) Извлекает квадратный корень Sqr(9)
Abs() Возвращает положительное значение (отрицательные числа становятся положитель­ными) Abs(-6)
Round () Округляет число до заданного числа десятич­ных знаков Round(8.89, 1) 3.9
Fix ( ) Возвращает целую часть числа, отбрасывая любую дробную часть Fix(8.89)
Int( ) То же что функция Fix(), но отрицательные числа округляются до ближайшего меньшего целого числа, а не большего Int(-8.89) -9

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

Функция Описание Пример Результат
Rnd( ) Генерирует случайное дробное число в диапа­зоне от 0 до 1 Int ((6) * Rnd + 1) Случайное целое от 1 до 6
Val ( ) Преобразует числовые данные в текстовом поле в настоящее число так, что вы можете исполь­зовать его в вычислении. Останавливается, как только находит нецифровой символ, и возвра­щает 0, если не найдено ни одной цифры Val ("315 Crossland St")
Format( ) Преобразует число в форматированную тексто­вую строку в соответствии с выбранными вами параметрами Format(243.6 , Currency) $243.60

 

 

Малоизвестная или недооцененная возможность.

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

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

По существу вы добавляете вычисляемое поле, содержащее случайное число. Можно использовать вполе выражение, такое как Random: Rnd ( ). Если посмотреть результа­ты вашего запроса, то можно увидеть случайное значение в диапазоне от 0 до 1 (например, 0.7045, 0.2344 и т. д.) рядом с каждой записью.

Теперь вернитесь в Конструктор и сбросьте флажок Вывод на экрандля того, чтобы поле Randomне выводилось на лист данных. Далее выберите порядок в ячейке Сорти­ровкапо возрастанию или по убыванию (что на самом деле не имеет значения) и снова выполните запрос. Ву-а-ля! Каждое выполнение запроса выводит на экран записи в раз­ном порядке, в соответствии со случайными числами, которые программа Access гене­рирует на лету.

 

 

Текстовые функции

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

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

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

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


В табл. 7.4 перечислены функции, наиболее часто применяемые для обработки текста.

 

Таблица 7.4. Функции для работы с текстом

Функция Описание Пример Результат
UCase( ) Выводит текст прописными буквами UCase("Hi There") HI THERE
LCase( ) Выводит тест строчными буквами LCase("Hi There") hi there
Left ( ) Выводит заданное вами число символов, на­чиная от левого края строки Left("Hi There", 2) Hi
Right 0 Выводит заданное вами число символов, на­чиная от правого края строки Right ("Hi There", 5) There
Mid ( ) Выводит часть строки, начиная с заданной позиции, и заданное число символов Mid ("Hi There", 4, 2) Th
Trim ( ) Удаляет пробелы с обеих сторон (или исполь­зуйте LTrim ( ) и RTrim( ) для удаления пробелов только в начале или в конце строки) Trim(" Hi There ") Hi There
Len ( ) Подсчитывает количество символов в тексто­вой строке Len("Hi There")

 

С помощью этих функций вы можете создать вычисляемое поле, которое отображает фрагмент длинной текстовой строки или изменяет вид отображения (строчные или пропис­ные буквы). Применение этих функций в условиях отбора не столь очевидно. Можно соз­дать условие фильтрации, задающее совпадение с частью текстовой строки, а не со всей строкой. Далее приведен пример условия отбора, выбирающего записи, начинающиеся с "Choco": Left([ProductName], 5) = "Choco"

 

На рис. 7.7 показано, как ввести это условие отбора.

Функция Len ( ) — особый случай. Она проверяет текстовое значение и возвращает чи­словую информацию (в данном случае количество символов в строке, включая все пробелы, буквы, цифры и специальные символы). Эта функция не слишком полезна в простых вы­числяемых выражениях, т. к. вас редко будет интересовать количество букв в текстовой строке. Но она позволяет создавать интересные условия отбора, включая, например, такое, которое отбирает все записи с полем Description короче 15 символов.

Len{Description) < 15