Работа с управляющими структурами 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Работа с управляющими структурами



Вложенные управляющие структуры. Одни управляющие структуры можно помещать внутри других структур (например, блок If...Then внутри цикла For...Next). В этом случае говорят, что управляющая структура, помещенная внутри другой управляющей структуры, является вложенной.

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

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

Инструкция Exit позволяет выходить из циклов For и Do (а также из процедур Sub и Function). Синтаксис инструкции Exit прост: Exit For может появляться любое число раз, по мере необходимости, внутри цикла For, a Exit Do может вводиться любое число раз внутри цикла Do:

Инструкция Exit Do работает со всеми версиями синтаксиса цикла Do.

Выход из процедур Sub и Function. Изнутри управляющей структуры можно также покинуть процедуру. Exit Sub и Exit Function полезны, когда процедура выполнила все, что от нее требуется, и может быть немедленно завершена. Синтаксис инструкций Exit Sub и Exit Function подобен синтаксису Exit For и Exit Do. Инструкции Exit Sub и Exit Function могут появляться внутри тела процедур Sub и Function (включая тело циклов) столько раз, сколько это требуется по логике процедуры.

Объекты в Access

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

 

Объект Комментарий
Кнопка Элементы управления в форме, такие как командные кнопки и группы переключателей, являются объектами.
Форма Каждая форма в приложении Access — отдельный объект.
Объекты данных Таблицы базы данных — объекты, которые содержат другие объекты, например, поля и индексы.
Диаграмма Диаграмма Microsoft Graph — объект, доступный в Access.

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

Объект (как экземпляр класса) содержит необходимый программный код, который писать уже не требуется.

Объекты Access поддерживают свойства, методы и события. Характеристики объекта можно изменять, изменяя значения его свойств.

Методы, как и свойства, — часть определения объектов. Обычно методы — действия, которые требуется выполнить, в то время как свойства — атрибуты, которые можно устано­вить или получить их значения.

Управление объектами с помощью их свойств. Некоторые свойства могут быть установлены во время разработки. Через окно свойств можно установить значения этих свойств, не прибегая к написанию программного кода. В то же время другие свойства недоступны во время разработки; следовательно, чтобы установить их значения в период выполнения, в программный мо­дуль необходимо ввести код процедуры.

Значение свойства устанавливается, когда требуется изменить вид или поведение объекта. Например, при установке свойства Text объекта Текстовое поле изменяется содержимое этого текстового поля.

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

объект.свойство = выражение

В большинстве случаев, чтобы получить значение свойства, используется следующий синтаксис:

Переменная = объект.свойство

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

объект.метод

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

Использование операторов! и. (точка). Операторы! и. (точка) в выражениях указывают тип элемента, стоящего справа от опера­тора.

Оператор! указывает, что следующий за ним элемент является элементом, определяемым пользователем. Оператор. (точка) обычно означает, что следующий за ним элемент определен в Microsoft Access. Допускается также использование оператора. (точка) для ссылок на значение поля в инструкции SQL, метод Visual Basic или семейство. Например, идентификатор Forms![Зaкaзы].Controls представляет ссылку на семейство Controls формы Заказы. Однако, поскольку семейство Controls является семейством, используемым для форм и отчетов по умолчанию, обычно нет необходимости ссылаться на него в явном виде.

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

Создание объектов. Самый простой способ создания объекта — щелкнуть элемент управления в панели эле­ментов и обозначить его на форме или отчете. Однако, чтобы реализовать полный набор возможностей объектов, доступных в Access, и объектов других приложений, необходимо использовать программные возможности Visual Basic для создания объектов в период выполнения. При этом:

• можно создавать ссылки на объекты с помощью объектных переменных;

• можно создавать пользовательские семейства с помощью объекта Collection.

Использование объектных переменных. Использование объектной переменной — подобно использованию стандартной перемен­ной, но с одним дополнительным шагом — объявления переменной как класса объекта:

Сначала объявляется переменная:

Dim переменная As класс_объекта

Затем ей назначается объект:

Set переменная = объект

Объектные переменные объявляются таким же образом, как и любые другие переменные — с помощью инструкций Dim, ReDim, Static, Private или Public. Отличия — необязательное ключевое слово New и параметр класс

Полный синтаксис объявления следующий:

{Dim | ReDim | Static | Private | Public} переменная As [New] класс

Например, можно объявить объектную переменную, которая относится конкретно к форме ГлавнаяФорма:

Dim FormVar As New ГлавнаяФорма ' Объявить объектную ‘переменную типа ГлавнаяФорма.

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

Можно также объявить объектную переменную, которая может содержать ссылку на любую форму в приложении:

Dim anyForm As Form ' Общая переменная формы (класса ‘Form)

Аналогично можно объявить объектную переменную, которая может относиться к любому полю (но только к полю) приложения, так как она имеет тип класса TextBox:

Dim anyText As TextBox

Следующая объектная переменная может содержать ссылку на элемент управления любо­го типа:

Dim anyControl As Control ' Объектная переменная общего типа

Назначение объекта переменной. Объект объектной переменной назначается с помощью инструкции Set:

Set переменная = объект

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

Специальные и общие объектные переменные. Специальные объектные переменные должны относиться только к одному определенному типу объекта или класса. Переменная формы может относиться только к одной форме в приложении (хотя она может обслуживать много экземпляров этой формы). Аналогично специальная переменная элемента управления может относиться только к одному отдель­ному типу элемента управления в приложении, такому как TextBox или ListBox.

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

В Access имеются такие общие объектные типы: Form (любая форма), Control (любой элемент управления), Object (любой объект).

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

Сброс объектных ссылок. Каждый объект использует память и другие системные ресурсы. Хороший стиль программи­рования предполагает освобождение этих ресурсов, когда объект более не используется.

Для выгрузки формы или элемента управления из памяти можно использовать инструкцию Unload. Когда объект выгружается, он удаляется из памяти и вся память, связанная с объектом, возвращается системе. Пока объект опять не помещен в память с помощью инструкции Load, пользователь не может взаимодействовать с ним, и взаимодействие с ним программным образом также невозможно.

Освободить ресурсы, используемые объектной переменной, можно также с помощью клю­чевого слова Nothing. Ключевое слово Nothing используется для прекращения связи объек­тной переменной с любым реальным объектом. Состояние Nothing присваивается объектной переменной с помощью инструкции Set. Например:

Set ИмяОбъекта = Nothing

С одним объектом могут быть связаны несколько объектных переменных. После примене­ния ключевого слова Nothing к объектной переменной связь этой переменной с любым реальным объектом прекращается.

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

Классы в Access

Для создания класс можно использовать модуль класса. Для этого необходимо в меню Вставка выбрать команду Модуль класса. После чего в разделе Описание описать переменные, определяющие свойства объекта класса как Public и переменные – члены класса как Private.

В этот же раздел помещают процедуры свойств Property и процедуры методов объектов класса.

Модуль класса имеет объект Class, который имеет два события Initialize и Terminate. В процедуры этих событий необходимо поместить соответствующий код. Обычно процедура обработки события Initialize содержит код, который должен быть выполнен в момент создания объекта. Процедура обработки события Terminate содержит код, который требуется выполнить, чтобы очистить ресурсы после разрушения объекта.

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

Создание свойств и методов класса. Обычно свойства представляют данные объекта, в то время как методы представляет действия, которые объект может выполнять. Иными словами, свойства обеспечивают описание объекта, в то время как методы - это его поведение.

Создание свойств класса. Самый простой способ определения свойства для класса - добавить к модулю класса переменные public.

Другой способ - использование процедуры свойств Property

Процедуры свойств используются, когда:

• свойство доступно только для чтения или, будучи однажды установлено, не может быть изменено;

• свойство имеет жесткий набор значений, которые необходимо проверять;

• значения вне некоторого интервала (например, отрицательные числа) допустимы для типа данных свойства, но если свойство позволяет вводить такие значения, возникают ошибки в программе;

• установка свойства должна обусловливать некоторое заметное изменение в состоянии объекта, например свойство Visible;

Visual Basic обеспечивает три вида процедур свойств, приведенные в следующей таблице.

Процедура Назначение
Property Get Возвращает значение свойств
Property Let Устанавливает значение свойств
Property Set Устанавливает значение объектного свойства (т.е. свойства, которое содержит ссылку на объект)

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

Методы класса - всего лишь public пользовательские процедуры Sub или Function в модуле класса. Так как процедуры Sub и Function - public по умолчанию, для создания метода даже не требуется явно специфицировать ключевое слово Public.

Свойство или метод? Иногда в процессе проектирования не совсем ясно, должен ли член класса быть свойством или методом. Ниже приводятся некоторые рекомендации.

Обычно свойство - данные, характеризующие объект, в то время как метод - действие, которое объект можно заставить выполнить. Некоторые из атрибутов объекта - очевидные свойства, такие как Цвет (Color) и Имя(Name), а некоторые - очевидные методы, например Move и Show.

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

Иногда действительно приходится решать "методом тыка", представляет ли член данные объекта или описывает его поведение. И часто эта проблема решается просто: если разработчику нравится, чтобы атрибут воспринимался как данные, он делает его свойством; если он хочет, чтобы атрибут описывал действия объекта, он делает его методом.

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

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

 

Работа с ошибками в VBA

Виды ошибок. Ошибки можно разделить на следующие три вида: ошибки компиляции; ошибки периода выполнения; логические ошибки.

Ошибки компиляции. Ошибки компиляции проистекают из ошибок в тексте кода. Если во время разработки введено неправильное ключевое слово, пропущена необходимая пунктуация или, например, использована инструкция Next без соответствующего инструкции For, Access обнаружит эти ошибки при компиляции приложения.

Если установлена функция Проверка синтаксиса во вкладке Модуль окна диалога Параметры, то при появлении синтаксической ошибки во время ввода текста в окно редактора кода Access немедленно выведет на экран сообщение об ошибке.

Чтобы установить опцию Проверка синтаксиса необходимо:

1. В меню Сервис выбрать команду Параметры и в окне диалога Пара­метры открыть вкладку Модуль.

2.В разделе Программирование установить флажок Проверка синтак­сиса

Ошибки периода выполнения. Ошибки периода выполнения возникают, когда приложение выполняется и Access обнаруживает, что инструкция делает попытку выполнить недопустимое или невозможное дейст­вие. Пример — деление на ноль. Прежде чем приложение обнаружит эту ошибку, его необходимо запустить на выполнение.

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

Как избежать ошибок? Имеется несколько общих рекомендаций, позволяющих уменьшить количество ошибок в приложении:

• каждая процедура обработки события и каждая процедура общей области должны иметь определенную, четкую цель;

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

• необходимо, когда возможно, использовать явные ссылки на объекты. Объекты нужно объявлять так, как они представлены в окне Классы окна Просмотр объектов вместо использования типа Variant или общего типа данных Object;

• рекомендуется разработать единообразную схему именования для переменных и объектов приложения;

• один из наиболее общих источников ошибок — опечатки в именах переменных или элементов управления. Избежать этого можно, используя инструкцию Option Explicit.

Управление ошибками. Ошибки периода выполнения могут останавливать выполнение программного кода. В этих ситуациях обычно у пользователя нет никаких средств, которые позволили бы ему продолжить работу в приложении. Другие ошибки могут и не прерывать выполнения, но обусловливают непредсказуемые результаты.

Чтобы предупредить такие ситуации, нужно использовать возможности обработки ошибок, предоставляемые Access. Эти средства позволяют перехватывать ошибки и выполнять некоторое корректирующее действие. Когда происходит ошибка, Access устанавливает личные свойства объекта Err, такие, как номер ошибки, ее описание и т. д. Объект Err и его свойства можно использовать в подпрограмме обработки ошибок для организации интеллектуального поведения приложения при наступлении ситуации ошибки.

Разработка процедур обработки ошибок. Процедура обработки ошибки — подпрограмма, предназначенная для перехвата и обработки ошибок приложением. Процедуры обработки ошибок следует вводить в любую процедуру, где возможно предвидеть возникновение ситуаций ошибки (приходится допустить, что теоретически для любой инструкции возможны условия ошибки). Процесс проектирования процедуры обработки ошибки включает три этапа:

1. Установить ловушку для ошибки, сообщив приложению, куда следует выполнить переход (какую подпрограмму обработки ошибки выполнить), если происходит ошибка.

"Ловушку" определяет инструкция On Error, которая направляет поток выполнения приложения на метку, отмечающую начало подпрограммы обработки ошибки.

Ловушка ошибки активируется, когда Visual Basic выполняет инструкцию On Егrоr, и остается активированной до тех пор, пока активна содержащая ее процедура, то есть до выполнения инструкции Exit Sub, Exit Function, Exit Property, End Sub, End Function или End Property этой процедуры. Хотя, в любой данной процедуре в любой момент может активироваться только одна ловушка ошибки, можно создавать несколько альтернативных ловушек, активируя их при разных ситуациях. Можно также деактивировать ловушку ошибки, используя специальный синтаксис инструкции On Error: On Error GoTo 0.

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

2. Написать подпрограмму обработки ошибок, реагирующую на все ошибки, которые данной ситуации можно предусмотреть.

Первый шаг при написании подпрограммы обработки ошибок — введение метки строки, отмечающей начало подпрограммы. Метка строки должна иметь некоторое описательное имя и должна заканчиваться двоеточием. Общее соглашение предусматривает размещение кода обработки ошибок в конце процедуры непосредственно после инструкций Exit Sub, Exit Function или Exit Property. Это позволяет процедуре в случае отсутствия ошибок не выполнять код обработки ошибок.

Тело подпрограммы обработки ошибок содержит код, который фактически управляет ошибкой обычно в форме инструкции Select Case или If...Then...Else. Необходимо заблаговременно определить, какие ошибки могут происходить, и обеспечить ход действий для каждой из них, например, пригласив пользователя вставить диск в случае ошибки "Устройство недоступно". Помимо этого, всегда нужно обеспечивать возможность обработки любых непредвиденных ошибок. Для этого можно использовать предложение Else или Case Else.

Свойство Number объекта Err содержит числовой код, представляющий самую последнюю ошибку периода выполнения. Используя объект Err в комбинации с инструкцией Select Case или If….Then….Else, можно предпринять определенное действие для любой ошибки.

Примечание. Строка, содержащаяся в свойстве Description объекта Err, поясняет ошибку, ассоциированную с текущим номером ошибки. Точная формулировка описания может изменяться с версиями Access. Следовательно, чтобы идентифицировать определенную ошибку, нужно использовать Err Number вместо Err.Description.

3. Выйти из подпрограммы обработки ошибок.

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

Инструкции Описание
Resume [0] Выполнение программы продолжается с инструкции, которая обус­ловила ошибку, или с последнего вызова процедуры, содержащей подпрограмму обработки ошибок. Эту инструкцию следует исполь­зовать для повтора операции после исправления условия, которое вызвало ошибку.
Resume Next Выполнение программы продолжается с инструкции, следующей непосредственно за той, которая обусловила ошибку. Если ошиб­ка произошла вне процедуры, которая содержит процедуру обра­ботки ошибки, выполнение продолжается с инструкции, следующей за вызовом той процедуры, в которой произошла ошибка (если вызываемая процедура не имеет активированной процедуры обработки ошибки).
Resume строка Выполнение программы продолжается с метки, специфицирован­ной параметром строка, где строка — имя метки или номер строки, отличный от нуля. Метка должна быть в той же процедуре, где и процедура обработки ошибки.
Err.Raise Number:= номер Вызывает ошибку периода выполнения. Когда эта инструкция вы­полняется внутри подпрограммы обработки ошибок, Access ищет список вызовов для другой подпрограммы обработки ошибок.

 

Работа в MS SQL –Server



Поделиться:


Последнее изменение этой страницы: 2016-09-13; просмотров: 422; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.239.46 (0.054 с.)