Главная » Просмотр файлов » Кузин А.В., Левонисова С.В. Базы данных (5-е издание, 2012)

Кузин А.В., Левонисова С.В. Базы данных (5-е издание, 2012) (1084448), страница 23

Файл №1084448 Кузин А.В., Левонисова С.В. Базы данных (5-е издание, 2012) (Кузин А.В., Левонисова С.В. Базы данных (5-е издание, 2012)) 23 страницаКузин А.В., Левонисова С.В. Базы данных (5-е издание, 2012) (1084448) страница 232018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 23)

Для этого используют описатель Static, т.е.определяют такую переменную как статическую. Эта переменнаясохраняет выделенное ей место в памяти и свое значение дажепосле завершения процедуры, в которой она была описана и ис­пользована.Тем не менее статическая переменная не может быть исполь­зована в других процедурах. Изменяется лишь время ее жизни, ноне область действия. Если произойдет повторный вызов той жесамой процедуры, в которой была описана статическая перемен­ная, то эта переменная сохранит свое прежнее значение, котороеона имела в момент завершения работы этой процедуры при пре­дыдущем вызове.

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

При описании процедур и функций на уровне про­екта может также использоваться необязательное ключевое словоPublic, но никакого воздействия на процедуру наличие или отсут­ствие этого слова не оказывает.Если требуется описать процедуру, используемую только науровне модуля, применяется ключевое слово Private. Такое описа­ние не только сужает область действия для процедуры, но и за­прещает ее использование как самостоятельной, т.

е. эту процеду­ру можно вызвать только из другой процедуры.Наконец, при описании процедур или функций может ис­пользоваться и ключевое слово Static. Оно никак не влияет наобласть действия процедуры, но воздействует на все перемен­ные, описанные внутри этой процедуры или функции. В этомслучае все локальные переменные получают статус Static и темсамым сохраняются в памяти после завершения такой процеду­ры и при повторном ее вызове сохраняют свои прежние значе­ния.Пример 3.5. Описание модуля:Public A1 As StringPrivate А2 As Integer118Dim A3 As SingleSub Procl ()Dim A4 As IntegerStatic A5 As IntegerA1 = "Текстовая строка 1"A2 = 2АЗ = 3.14A4 = A4+4A5 = A5+5MsgBox A4MsgBox A5End SubSub Proc2() ProclMsgBox A1MsgBox A2MsgBox A3MsgBox A4MsgBox A5ProclEndSubВ этом примере переменная А1 определена на уровне всего проекта(использовано ключевое слово Public), переменные А2 и А1 — на уровнемодуля, переменная А4 — только на уровне процедуры Procl, а пере­менная А5 хотя и определена в теле процедуры Procl, но описана какстатическая переменная.При вызове процедуры Ргос2 происходит следующее: из этой проце­дуры, в свою очередь, вызывается процедура Procl, которая присваива­ет значения всем пяти переменным А1...

А5, а затем показывает текущиезначения переменных А4 и А5 в диалоговом окне.После завершения этой процедуры выводятся текущие значения пе­ременных А1... А5 из процедуры Ргос2. При этом оказывается, что пере­менные А1...АЗ сохранили свои значения, поскольку они описаны науровне модуля, а переменные А4 и А5 принимают пустые значения, по­скольку областью их действия являются процедуры, в которых они ис­пользуются. Никакие изменения этих переменных внутри одной из про­цедур не имеют отношения к аналогичным переменным из другой про­цедуры, так как на самом деле это разные переменные, просто для нихиспользуются совпадающие имена.Затем происходит еще один вызов процедуры Procl, и она вновь на­чинает изменять и выводить на экран значения переменных А4 и А5. Приэтом переменная А4 вновь получает значение 4, поскольку при новомвызове процедуры для этой переменной заново выделяется память, иона будет инициализирована пустым значением.

В отличие от А4 пере­менная А5, описанная как статическая переменная, сохраняет свое пре­жнее значение от предыдущего вызова этой процедуры, и в результатеее значение при повторном вызове оказывается равным 10.1193.2.5. Модули VBAКод VBA в приложении Access собран в модули. Модули явля­ются такими же объектами Access, как таблицы, запросы, фор­мы, отчеты, страницы и макросы, о чем свидетельствует ярлыкна панели объектов в окне База данных (Database). Основное со­держание модулей — это процедуры на языке VBA.

Существуетдва типа модулей: стандартные и модули класса.Стандартные модули содержат общие процедуры, которые мо­гут использоваться в разных местах приложения: при обработкесобытий в разных объектах, для вычисления значений в разныхзапросах или формах, а также вызываться из других модулей и т.д.Эти процедуры не связаны с конкретным объектом: формой илиотчетом. Они могут использоваться для объявления глобальных(т.е. доступных из всех окон приложения) переменных, констант,типов, внешних процедур.Если в процедурах модуля нет ссылок на конкретные объектыданного приложения (формы, отчеты, элементы управления), тотакой модуль может с успехом использоваться другими приложе­ниями Access.Список стандартных модулей приложения всегда можно уви­деть, нажав кнопку [Модули] (Modules) в окне База данных(Database), в котором обычно и выполняется работа с этими мо­дулями. Если выделить в окне базы данных Борей (Northwind)модуль Служебные функции (Utility Functions) и нажать кнопку[Конструктор] (Design), то откроется окно редактора кода VBA,в котором можно увидеть содержание этого модуля, состоящегоиз двух строк описания и одной процедуры — функции IsLoaded(рис.

3.6). Это пример универсальной функции, проверяющей, загБ ор ей - С л уж ебны е Ф ун кц и и (Code)Option Compare DatabaseOption Explicit___Function IsLoaded(ByVal strFormName As String) As Boolean1 Возвращает значения True, если форма открыта в режиме фаргаЦConst conObjStateClosed = ОConst conDesignView - ОIf SysCittdtacSysCmdGetOfojectState, acForm, strFormNaifie) <>§If Forms (strForrriPJame) .CurrentView <> conDesignView ThrIsLoaded = TrueEnd IfEnd IfРис 3.6. Функция IsLoaded120Рис. 3.7. Диалоговое окно свойств формыружена ли форма, имя которой передается ей в качестве аргумен­та.

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

Он создается и связывается с формой, как только произ­водится попытка создать первую процедуру обработки событийдля этой формы или одного из элементов управления формы,либо нажимается кнопка [Программа] (Code) в окне конструкто­ра формы. Чтобы убедиться в этом, можно открыть любую формуприложения Борей (Northwind) в режиме конструктора и посмот­реть ее свойства. На вкладке Другие (Others) есть свойство Наличиемодуля (Has Module), которое должно иметь значение Нет (No).После нажатия кнопки [Программа] (Code), которая служит дляоткрывания редактора кода VBA, это свойство будет иметь значе­ние Да (Yes) (рис. 3.7).В окне редактора кода VBA отображается объект Форма (Form),а справа от него — поле со списком событий, с которыми могутбыть связаны процедуры VBA (рис.

3.8).Если в модуле для некоторого события существует процедура,то это событие выделяется в списке жирным шрифтом. В данномслучае таких событий нет, так как обработка событий в формеКлиенты (Customers), которую мы открыли, выполняется с по­мощью макросов. При попытке открытия редактора VBA автома­тически создается модуль формы, который будет иметь названиеР о гт Клиенты, и в нем процедура обработки события Load.121|^ д M icro so ft V is u a l B asic!..

-і■- r.j_Б орейBIS .Б[Form К л и е н т ы (C ode)]ЙІІІЖЙ:;: » *І FormKBEit.іі...!SJK*!.. f e i !- о ґ г п _ З а ;< а з ь іЩ FofffiJCwtôHTbiІ...Ш— ІForm_OT4eTbi о Я_JL 3Option Compare Pat abas KeyDownKeyPressKeyUpЩ §n'w m 1. -'v ? JКлиентыРогтКлиентыPrivate Sub Form_Load( LoadEnd SubтіLostFocusMouseDownMouseMoveMouseUpOpenTimerUnload9МНК=" Я ;jAfl-erlnsertjAfterllpdateКлиенты.ОбнîjAllowAdditionsTrueJAllowDeletionsTruejAllowDesignCha FalsejAllowEditsTrue__i± JРис. 3.8. Окно редактора кода VBAОткрыть форму из программы VBA и изменить какие-то свой­ства этой формы или свойства ее элементов управления можнодвумя методами.1. Использование макрокоманды OpenForm, как метода объек­та DoCmd, например:DoCmd.OpenForm "Товары"Forms!Товары.RecordSource = "Товары клиента"2.

Использование ссылки на соответствующий модуль класса,например:Form_ToBapbi. Visible = TrueForm_ToBapbi.RecordSource = "Товары клиента"В обоих случаях при выполнении программы открывается стан­дартный экземпляр формы Товары (Products) и подменяется ис­точник записей для этой формы.Формы и отчеты являются стандартными классами объектов вAccess, однако можно использовать модули класса и для созданияспециальных объектов. В этом случае имя, под которым сохраня­ется модуль класса, становится именем специального объекта. Про­цедуры типа Sub и Function, определенные в модуле класса, приэтом станут методами объекта, а процедуры типа Property Let,Property Get и Property Set — свойствами объекта. Для описанияметода, не возвращающего никакое значение, используется про­122цедура Sub, а для описания метода, возвращающего некотороезначение, — процедура Function. Процедура Property Get возвра­щает значение свойства объекта.

Характеристики

Тип файла
PDF-файл
Размер
20,98 Mb
Тип материала
Предмет
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6310
Авторов
на СтудИзбе
312
Средний доход
с одного платного файла
Обучение Подробнее