Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2020

Просмотров: 7906

Скачиваний: 25

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Данные, вводимые пользователем в интерактивном режиме, обычно представлены

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

В этом разделе будет рассказано, как пользоваться существующими функциями

обработки строк и на их основе создавать новые.

Взаимное преобразование строк и чисел

Функции

 и

 предназначены для преобразования чисел в строки и

строк в числа соответственно. Так выглядит синтаксис функции Str:

 Число }

Аргумент Число — это любое числовое литеральное значение или выра-
жение. В качестве параметра функция Str принимает число, а возвраща-

 строку цифр и символов, составляющих это число.

Функция Val выполняет обратную операцию. Val получает строку чи-
словых символов, а возвращает числовое значение. Синтаксис функции

Val приведен ниже.

S

 Строка )

 Аргумент Строка представляет собой последовательность символов, до-

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

"1234"

Строчная е или прописная Е служат для представления чисел в экспоненциальной

нотации. Все другие символы считаются недопустимыми и игнорируются. Так, на-
пример, результатом вычисления выражения Val ( "1313 Etc" ) будет число 1313.

Листинг

 несколько примеров использования функций str и Val.

Листинг

 Примеры использования функций Str и Val

1 Sub

 )

2

 L As Long

3 Dim D As Double
4 D =

 )

5

 D

 L =

 )

7

 L

8 Dim S As String
9 Dim Т As String
10:

 S = Str( D )

11:

 S

 Т =

 L )

 Т

14:

 Т )

15:

 Т

16: End Sub

180

Часть III. Использование ресурсов Access


background image

Рассмотренные примеры преобразований очевидны. Команда в строке 14

I с помощью функции

 осуществляет в окне Immediate вывод

строки, содержащей наименование типа переменной Т. (Напомним, что
команда Debug. Print отображает содержимое своего аргумента-
выражения в окне Immediate.) Результат вычисления процедуры

 представлен на рис. 10.1. Обратите внимание: вместо ожидаемого

итога выполнения строки 4

 на экране отображается равноцен-

ное, но упрощенное число 1е+35, а команда строки 7 выводит число 3,
поскольку символ i при преобразовании отбрасывается.

 i [

 As

 D As

D - Val

 D

 I

 5 As

 Т As String

S -

 S

Т -

 Т

Debug.

 Т

End

|

 выглядят результаты преобразований с помощью функций Val и Str в

окне Immediate

Строковые функции двойного назначения

В табл.

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

 завершается символом доллара ($), она возвращает значение типа String;

если нет — результатом будет величина Variant.

Таблица

 Строковые функции двойного назначения

Функция

Возвращаемое значение и описание

Chr$(
ChrB$(

Символ

Байт

Строка, содержащая параметры командной строки

10-й час. Как использовать готовые решения

181


background image

Окончание табл. 10.1

Функция

Возвращаемое значение и описание

Dir$(

 [,

Error$(

Format$( Выражение [, Формат [,

 [,

Нех$( Число)
lnput$( Число,

 ЧислоБайтов,

Lcase$( Строка )

 Строка,

 Строка,

Ltrim$( Строка )

 Строка,

 [, Чис-

лоСимволов] )

 Строка, НачальнаяПозиция

[,

Right$( Строка,

 Строка,

Rtrim$(
Space$(
Str$(

String$( ЧислоСимволов,
Time$

Ucase$(

Наименование текущего каталога на указанном диске. Па-

раметр, указывающий букву дисковода, необязателен
Строка, содержащая текущую дату
Наименование первого найденного файла, удовлетворяю-

щего заданным критериям поиска
Сообщение об ошибке, соответствующее указанному но-

меру. Если номер ошибки не задан, возвращается сооб-

щение о последней ошибке
Строка, которая форматируется в соответствии с инструк-

циями, заданными в необязательных аргументах
Заданное число в

 системе счисления

Строка, содержащая заданное число символов, которая

считывается из указанного файла
Строка символов, содержащая заданное число байтов, ко-

торая считывается из указанного файла

Строка, алфавитные символы которой преобразованы в

нижний регистр
Левая часть строки, содержащая указанное число символов
Левая часть строки, содержащая указанное число байтов
Строка, в которой удалены ведущие пробелы
Часть строки, содержащая указанное число символов, на-

чиная с заданной позиции
Часть строки, содержащая указанное число байтов, начи-

ная с заданной позиции
Строка, содержащая восьмеричное представление задан-

ного десятичного числа
Правая часть строки, содержащая указанное число симво-

лов

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

Строка пробелов заданной длины
Строка, содержащая символьное представление заданно-

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

верхний регистр

Например, вызов

 Chr ( 65 ) даст

 в итоге значение

 Variant.

 Если же обратиться к

функции Chr$ ( 65

 будет возвращена строка

 (String),

 хотя оба результата равны

символу А.

182

Часть III. Использование ресурсов Access


background image

Значения типа Variant более гибкие и управляемые, но их использование связано

с издержками в виде дополнительного расхода памяти и процессорного времени, по-

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

заранее, оговаривайте его явно.

Функции преобразования типов данных

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

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

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

Ниже приведены некоторые из подобных функций.

• CBool преобразует выражение в значение типа Boolean.
• CByte преобразует выражение в значение типа Byte.

 преобразует выражение в значение типа Currency.

• CDate преобразует выражение в значение типа Date.

 преобразует выражение в значение типа Double.

• CDec преобразует выражение в значение типа Decimal.

 преобразует выражение в значение типа integer.

 преобразует выражение в значение типа Long.

• CSng преобразует выражение в значение типа single.
• CStr преобразует выражение в значение типа String.

• CVar преобразует выражение в значение типа Variant.

Нельзя объявить переменную типа

 Decimal. Для хранения

данных этого типа необходимо объявить переменную типа Variant.

Чтобы преобразовать строку "False" в переменную типа Boolean, используйте

функцию CBool.

Dim В

 As

 Boolean

В =

Преобразовать строку в значение типа Decimal можно, объявив переменную типа

Variant и использовав функцию CDec.

Dim S As String

Dim D As Variant
D =
D = D * 10000

MsgBox D

Функции преобразования активно применяются программистами, поскольку часто

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

мог их отредактировать), а затем обновленные данные вновь преобразовывать в ис-
ходный тип для выполнения вычислений.

 час. Как использовать готовые решения


background image

Поиск строк

В составе VBA имеется функция InStr, предназначенная для поиска по-
следовательностей символов внутри заданной строки. Подобная задача
возникает на практике достаточно часто. Синтаксис обращения к

 ции InStr таков:

 ГдеИскать, ЧтоИскать [,

 )

НачальнаяПозиция — необязательный аргумент, указывающий номер символа, с ко-

торого следует начинать поиск. Этот параметр полезен в том случае, когда искомая по-
следовательность символов может в строке повторяться. Аргумент ГдеИскать задает
строку, в которой будет выполняться поиск, а ЧтоИскать — искомую подстроку. В ка-
честве параметра ОпцияСравнения может задаваться одно из значений предопределен-
ного перечислимого

 vbUseCompareOptions, vbBinaryCompare, vbTextCom-

pare или vbDatabaseCompare.

Значение vbUseCompareOptions указывает функции на необходимость использовать

опцию сравнения, установленную командой Option Compare. Режим vbBinaryCom-
pare позволяет осуществлять поиск с учетом регистра символов, a vbTextCompare —
без него.

Если функция InStr возвращает нуль, это значит, что искомая последовательность

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

Листинг 10.2 демонстрирует отличия между режимами поиска с учетом и без учета ре-

гистра символов, а листинг 10.3 содержит пример процедуры, выполняющей поиск всех
вхождений указанной символьной

 в заданную "большую" строку.

Листинг 10.2. Поиск строк с учетом и без учета регистра алфавитных символов

1: Sub

 )

2:
3: MsgBox

 End Sub

1, "Здравствуй,
1,

 Здравствуй,

"Мир", vbBinaryCompare

"Мир", vbTextCompare }

Процедура MsgBox, которая вызывается в строке 2, отображает окно со-

I общения, содержащее результат 0: поиск слова "Мир" в строке

"Здравствуй, мир" завершился неудачей, поскольку с учетом регистра

символов (опция vbBinaryCompare) слова "Мир" и "мир" считаются

различными. Напротив, следующее окно сообщения высветит резуль-
тат 13: без учета регистра (режим vbTextCompare) слова становятся рав-
ноправными.

Листинг

 Поиск всех вхождений подстроки

1: Sub

 )

2: Const SEARCH_ME = "На дворе — трава, на траве — дрова"
3: Const SEARCH_FOR = "трав"

4:

 Р = О

 Do While (1=1)

184

Часть III. Использование ресурсов Access