КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Повторение действий с помощью циклаЦикл — это инструмент, позволяющий повторять операцию столько раз, сколько нужно. В языке Visual Basic есть несколько типов циклов, которые можно использовать. Наиболее популярны блоки Do/Loop и For /Next, и в этом разделе вы познакомитесь с обоими. Далее приведен пример блока Do/Loop, который наверняка выведет читателей из равновесия: Do MsgBox "Ever ever get that nagging deja vu feeling?" Loop Когда программа Access обрабатывает этот код, она начинает с вывода окна сообщения и остановки выполнения остального вашего кода. После того как вы щелкнули мышью кнопку ОК, выполнение кода продолжается до финального оператора Loop в конце цикла. В этот момент программа автоматически переходит к началу цикла (оператор Do) и повторяет ваш код, выводя второе окно сообщения. Проблема в том, что этот процесс продолжается бесконечно! Если допустить ошибку и запустить этот код, ваша БД будет заблокирована на неопределенное время (пока вы не нажмете комбинацию клавиш аварийного останова <Ctrl>+<Break>). Для того чтобы избежать подобной ситуации, следует создавать все циклы с условием выхода из цикла, сигнализирующим о моменте его завершения. Далее приведен исправленный вариант того же цикла, который прекращается после того, как сообщение отображено пять раз: ' Отслеживает количество повторений цикла Dim NumberOfTimes
' Начинает отсчет с 0 NumberOfTimes = 0
Do MsgBox "Ever ever get that nagging deja vu feeling?"
' Увеличивает счетчик на 1 NumberOfTimes = NumberOfTimes + 1 Loop Until NumberOfTimes =5 Важная часть — оператор в конце цикла, Until Number0fTimes=5. Он определяет условие, и как только оно становится True (значение переменной NumberOfTimes равно 5), программа Access достигает конца цикла и переходит к выполнению оставшегося кода процедуры. Если вам нужен цикл с фиксированным количеством повторений, возможно, вас заинтересует цикл типа For/Next. Этот тип цикла в точности такой же, как цикл Do/Loop за исключением того, что у него есть встроенный счетчик, увеличивающийся автоматически при каждом проходе цикла. Теперь можно переписать предыдущий пример в более компактной форме с применением цикла For/Next: Dim NumberOfTimes For NumberOfTimes = 1 To 5 MsgBox "Ever ever get that nagging deja vu feeling?" Next Важная часть цикла - оператор NumberOfTimes=l To 5, сообщающий программе Access о начальном значении переменной NumberOfTimes, равном 1, о необходимости увеличения ее значения на 1 при каждом проходе цикла и о завершении цикла после пятого прохода. Цикл Do/Loop удобен при обработке коллекции данных. Его можно применять для обработки информации до тех пор, пока она не иссякнет, даже если заранее вы не знаете, сколько данных у вас есть. Вы увидите пример использования этого метода в конце данной главы, когда будете выполнять пакетное обновление вашей БД с помощью программного кода. С другой стороны цикл For/Next предстанет во всей красе, если вы можете точно определить заранее, сколько раз хотите повторить цикл. В справедливости этого вы убедитесь чуть позже в этой главе, когда будете проверять номера кредитных карт.
|