Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаборатор access.doc
Скачиваний:
41
Добавлен:
02.02.2015
Размер:
33 Мб
Скачать
☆

1.12 Функции и подпрограммы.

Вы можете создать в Microsoft Access Basic два типа процедур ─ функции (Function) и подпрограммы (Sub), называемые также процедурами-функциями и процедурами-подпрограммами. Процедуры обоих типов могут иметь аргументы ─ переменные, с помощью которых вы передаете процедурам значения, определяющие работу процедуры при конкретном ее вызове. Функция может возвратить единственное значение, а подпрограмма значений не возвращает. Кроме того, функции можно выполнять из любого места Microsoft Access, в том числе и из выражений в запросах, и из макросов. Подпрограмму можно выполнить только при вызове ее из функции, из другой подпрограммы или как процедуру обработки события в форме или отчете. Инструкция Function

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

Синтаксис:

[Static] [Private] Function имя-функции [<аргументы>]

[Аs тип -данных ] [<инструкции-тела-функции>]

[имя-функции = <выражение>]

[Exit Function]

[<инструкции-тела -функции>]

[имя-функции == <выражение>]

End Function

где <аргументы> - это

{[ByVal] имя-аргумента [As тип-данных]],...

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

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

Для определения типа возвращаемых функцией значений можно использовать символ обозначения типа данных в конце имени функции или предложение As (как для обычной переменной). Если вы не объявите тип данных, Access предположит, что функция возвращает значение типа Variant.

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

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

Если вы используете при объявлении аргумента ключевое слово ByVal (By Value ─ по значению), то Access передаст функции копию соответствующего аргумента. Любые изменения, которые вы сделаете с аргументом, объявленным с ключевым словом ByVal, не отразятся на состоянии исходной переменной в вызывающей процедуре.

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

процедуру.

Для объявления новой процедуры используйте следующий синтаксис:

[Static] [Private] Sub имя-подпрограммы ( [<аргументы>] )

[Аs тип -данных ] [<инструкции-тела-подпрограммы>]

[Exit Sub]

[<инструкции-тела -подпрограммы>]

End Sub

где <аргументы> - это

{[ByVal] имя-аргумента [As тип-данных]],...

1.1.3 Управление выполнением программы.

Microsoft Access Basic предоставляет следующие средства для осуществления управления ходом выполнения процедуры:

1. Инструкция Call

Используйте инструкцию Call для передачи управления подпрограмме.

Синтаксис:

Call <имя-подпрограммы> [ <аргументы> ]

или

<имя-подпрограммы>[< аргументы>]

где <аргументы> - это { [ByVal] <выражение>} , ...

2. Конструкция Do...Loop

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

Синтаксис:

Do [{While | Until} <условие>]

[ <инструкции-тела -цикла>

[Exit Do]

[ <инструкции-тела -цикла>

Loop или Do

{<инструкции-тела-цикла>]

[Exit Do]

[ <инструкции -тела -цикла>

Loop [{While | Until} <условие>]

3. Конструкция For...Next

Используйте конструкцию For... Next для того, чтобы выпол­нить последовательность инструкций определенное число раз.

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

Синтаксис:

For счетчик = начальное-значение То кoнeчнoe-знaчeние

[Step шаг]

{<инструкции-тела-цикла>]

[Exit For]

[ <инструкции-тела -цикла >]

Next [ счетчик], . . .

4. Инструкция GoTo

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

Синтаксис:

GoTo { метка 1 номер-строки}

Вы можете пометить строку процедуры, содержащую инструкцию, поместив в начале строки начинающуюся с буквы символьную метку, которая имеет длину не более 40 символов и заканчивается двоеточием (:).

5. Условная конструкция lf...Then...EIse

Используйте конструкцию If...Then...Else для выполнения той или другой группы инструкций в зависимости от значения условного выражения.

Синтаксис:

If <условие-1> Then

["<инструкции-процедуры-1>] [Elself условие-2 Then [<инструкции-процедуры-2>] ]... [Else [<инструкции-процедуры-п>]]

End If

Или If <условие> Then <инструкция-то> [Else <инcтpукция-инaчe>]

6. Условная конструкция Select Case

Используйте конструкцию Select Case для выполнения инструкций в зависимости от результатов сравнения некоторого выражения со списком значений или диапазоном значений.

Синтаксис:

Select Case <проверяемое-выражение>

[Case <список-сравнения-1>

[<инструкции-процедуры-1>] ]

[Case Else

[<инструкции-процедуры-n>] ]

End Select

где

<проверяемое-выражение> ─ это некоторое числовое или строковое выражение;

<список-сравнения> есть {<элемент-сравнения>, . . . }

где <элемент-сравнения> это { выражение | выражение1 То выражение2 |

Is <оператор-сравнения> выражение} и где <onepamop-cpaвнeния> есть:

{= | <>| <|>|<=| >=}.

Если <npoвepяeмoe-выpaжeнue> совпадает с одним из <элементов-сравнения> в предложении Case, то Access выполняет инструкции этого предложения. Если <элемент-сравнения> представляет собой одиночное выражение, то для того, чтобы выполнялся блок инструкций этого предложения, <проверяемое-выражение> должно быть равно <элементу-сравнения>. Если <элемент-сравнения> содержит ключевое слово То (До), то первое выражение должно быть меньше второго, и значение <проверяемого-выражения> должно находиться между значениями выражения 1 и выражения2.Если <элемент-

сравнения> содержит ключевое слово Is, то результат сравнения должен быть истинным.

7. Инструкция Stop

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

Синтаксис:

Stop

Инструкция Stop производит то же действие, что и установка контрольной точки на некоторой инструкции. Чтобы оценить состояние процедуры после того, как

8. Конструкция While. . .Wend

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

Синтаксис:

While <условие>

[ <инструкции-процедуры> ]

Wend

9. Инструкция DoCmd

Используйте инструкцию DoCmd для того, чтобы выполнить макрокоманду из процедуры Access Basic.

Синтаксис:

Do Cmd макрокоманда [аргумент-макрокоманды], . . .

10. Инструкция On Error

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

Синтаксис:

On Error {GoTo идентификатор-строки I Resume [Next] I GoTo 0 }

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

On Error Resume Next

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

On Error GoTo MyError:

Чтобы отключить режим перехвата ошибок в текущей процедуре, введите:

On Error GoTo О