Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (960530), страница 67
Текст из файла (страница 67)
П р о г р а м м а з а п и с ы в а е т с я в п р о ц е д у р е к а к н а б о р ин-струкций и методов, с помощью которых выполняются требуемые действия.Процедуры, как известно, хранятся в модулях и выполняются в ответ на события или вызываются из выражений, макросов и других процедур.В Access существуют следующие способы запуска программ VBA:• включение программы в процедуру обработки события;• вызов функции в выражении;• вызов процедуры Sub в другой процедуре или в окне отладки;• выполнение макрокоманды З а п у с к П р о г р а м м ы ( R u n C o d e ) в макросе.Например, чтобы вызвать программу выполнения определенных действийпри открытии формы, нужно включить ее текст в процедуру обработки события Н а ж а т и е к н о п к и ( C l i c k ) для кнопки, при нажатии которой будет открываться форма.Ф у н к ц и и применяются в выражениях, определяющих вычисляемые поляв формах, отчетах или запросах.
Выражения используются для указания условий в запросах и фильтрах, а также в макросах, в инструкциях и методахVBA, а также в инструкциях SQL. В процедуру Sub можно включать общедоступные VBA-подпрограммы, вызываемые из других процедур.Рассмотрим выполнение запроса к базе данных с помощью инструкцийS Q L в программе на Visual Basic для приложений.В запросе производится отбор в базе данных записей, удовлетворяющихопределенным условиям (запрос на выборку), либо выдается инструкция навыполнение указанных действий с записями, удовлетворяющими определенным условиям (запрос на изменение).Если запрос S Q L используется для возвращения данных, ядром базы данных Microsoft J e t создается объект R e c o r d s e t .
После создания этого объекта можно использовать методы поиска ( F i n d ) и перемещения по записямнабора.Существуют следующие способы выполнения запросов:• вызов метода E x e c u t e (для выполнения запросов S Q L на изменение);• создание и выполнение специального объекта Q u e r y D e f ;• и с п о л ь з о в а н и е инструкции SQL в качестве аргумента методаOpen Recordset;• в ы п о л н е н и е методаOpenRecordsetQueryDef;• вызов методовRunSQLиOpenQuery.для существующего объектаЧасть 3. Современные СУБД и их применение320Метод E x e c u t e используется, если требуется выполнить такое изменениев БД, при котором не возвращаются записи. Это, например, операции вставки или удаления записей.В качестве простейшего примера приведем команды Visual Basic для приложений выполнения запроса на изменение, в котором выполняется обновление записей таблицы «Должности», не имеющих значение в столбце ISBN.При возникновении ошибки все изменения отменяются.Dim strSQL as StringstrSQL = «DELETE FROM Должности WHERE ISBN IS NULL»dbsBiblio.Execute strSQL, dbFailOnErrorОбъект Q u e r y D e f представляет собой сохраненное определение запроса вбазе данных.
Его можно рассматривать как откомпилированную инструкциюSQL.Приведенная ниже программа выполняет создание нового объекта Q u e r y D e f ,после чего соответствующий запрос открывается в режиме таблицы.Sub NewQueryQ' Объявление переменныхDim dbs As Database, qdf As QueryDef, strSQL As String' Установка значения переменной типа Database,' представляющей текущую базу данныхSet dbs = CurrentDb' Строка запросаstrSQL = «SELECT * FROM Сотрудники WHERE[ДатаНайма ]>= # 1-1 -95 # »' Создание нового объекта QueryDefSet qdf = dbs.CreateQueryDef(«HoebieCompydHUKU»,strSQL)' Открытие запросаDoCmd.OpenQueryqdf.NameEnd SubМетод OpenRecordSet используется, чтобы открыть объект типа RecordSetдля выполнения последующих операций над ним.В следующей процедуре с помощью инструкции SQL создается объектRecordset типа динамического набора записей.
В предложение WHERE инструкции SQL включена функция Y e a r , определяющая отбор заказов, размещенных в 1998 году.SubOrders98()Dim dbs As Database, rstAs Recordset, strSQL As String10. СУБД Access 2002321Dim fid As FieldSet dbs = CurrentDbstrSQL = «SELECT DISTINCTROW«FROM Заказы WHERESet rst = dbs.OpenRecordset(strSQL,rst.MoveLastDebug.Printrst.RecordCountEnd SubЗаказ, ДатаРазмещения« &((Уеаг([ДатаРашещения])=1998));»dbOpenDynaset.)Метод R u n S Q L выполняет макрокоманду 3 a n y c K 3 a n p o c a S Q L ( R u n S Q L )в программе VBA.
В следующем примере изменяется название должности всехагентов по продажам в таблице «Сотрудники».D o C m d . R u n S Q L « U P D A T E Сотрудники « &«SET Сотрудники.Тк1е = 'Региональный представитель' « &« W H E R E Сотрудники.ТШе = 'Агент по продажам';»OpenQueryвыполняет макрокомандуОткрытьЗапрос( O p e n Q u e r y ) в программе VBA. С его помощью можно открыть запрос в режиме таблицы, Конструктора или просмотра. При этом устанавливается одиниз следующих режимов работы с данными: добавление, изменение или только чтение.В следующем примере запрос «Выработка сотрудников» открывается врежиме таблицы, в котором пользователю разрешается просмотр записей.МетодDoCmd.OpenQuery «Выработка сотрудников»,, acReadOnlyВыбор варианта выполнения запросов определяется программистом с учетом особенностей решаемой задачи.1 0 . 7 .
З а щ и т а баз д а н н ы хВ Access реализованы следующие способы защиты баз данных: парольнаязащита, защита на уровне пользователей и шифрование.ПарольнаязащитаБДПарольная защита является простым и часто достаточным средством обеспечения защиты Б Д от открытия несанкционированными пользователями.Используемый при этом пароль называют паролем базы данных.З н а я пароль БД, любой пользователь сможет ее открыть и использовать, атакже выполнить все необходимые операции с ней. Установка пароля может11 Зак.
541322Часть 3. Современные СУБД и их применениебыть запрещена в случае, если для БД установлена защита на уровне пользователя и наложен запрет на парольную защиту.Парольная защита может использоваться в дополнение к защите на уровне пользователя. В этом случае устанавливать парольную защиту можетпользователь, обладающий правами администратора БД.Поскольку парольную защиту можно применять наряду с защитой на уровне пользователя, возникает вопрос: «Можно ли защитить БД паролем, а затем защитить ее на уровне пользователя?». Ответ — нет. Дело в том, что защита на уровне пользователя состоит в создании новой БД, которая защищенаи имеет структуру исходной БД.
Из-за того, что Access не позволяет защищенную на уровне пользователя БД именовать так же, как и исходную, тоновая БД всегда будет без пароля. После открытия БД ее можно легко защитить с помощью пароля. Таким образом, для установки обоих видов защитыБД сначала защищают на уровне пользователя, а потом устанавливают пароль.Если парольная защита действует наряду с защитой на уровне пользователя, то пользователю предоставляется возможность выполнять над объектами БД действия, предусмотренные правами доступа.Парольную защиту БД нельзя использовать в случае, если предполагаетсявыполнять репликацию БД.
Система Access не позволяет создавать копии(реплики) БД, защищенных паролем.Метод парольной защиты достаточно надежен, так как пароль системаAccess шифрует, и к паролю нет прямого доступа. Он хранится вместе с защищаемой БД, а поэтому открыть БД не удается и на другом компьютере с установленной там системой.Увидеть пароль или найти место в файле БД, которое он занимает, — занятие неперспективное. Попытки авторов сделать это с помощью средств прямого редактирования файлов (например, утилитой d i s k e d i t комплекта утилит N o r t o n U t i l i t i e s ) и специально для этого разработанных программ на языкеПаскаль ни к чему не привели. При использовании парольной защиты отпользователя требуется подобрать удачный пароль и надежно его сохранитьот потери и от хищения.Процедура установки парольной защиты БД включает следующие шаги.1.
Закрытие базы данных, если она открыта. Если база данных используется в сети, следует проверить, что все остальные пользователи тоже закрыли ее.2. Выбор в меню команды Ф а й л | О т к р ы т ь ( F i l e | O p e n ) . Появится диалоговое окно Открытие файла базы данных ( O p e n ) .3. Установка с помощью соответствующего списка в правой нижней частиокна открытия файла режима монопольного доступа ( М о н о п о л ь н о( E x c l u s i v e ) ) и открытие базы данных.10.
СУБД Access 20023234. Выбор командыС е р в и с | З а щ и т а | Задать пароль базы д а н н ы х (Tools| Security | Set Database Password).5.Ввод пароля в поле П а р о л ь ( P a s s w o r d ) с учетом регистра клавиатуры.6. Подтверждение введенного пароля путем повторного его ввода в полеП о д т в е р ж д е н и е ( V e r i f y ) , а после этого — нажатие О К .Удалить пароль намного проще, главное — знать его при открытии БД. Дляудаления пароля Б Д следует выполнить четыре действия.1.
Открыть базу данных в режиме монопольного доступа (см. установкупароля выше).2. И з меню системы выдать команду С е р в и с | З а щ и т а | У д а л и т ь п а р о л ьб а з ы д а н н ы х ( T o o l s | S e c u r i t y | U n s e t D a t a b a s e P a s s w o r d ) . Командадоступна, если пароль базы данных уже установлен.3. В поле П а р о л ь ( P a s s w o r d ) появившегося окна У д а л и т ь п а р о л ь б а з ыданных ввести текущий пароль.4. Нажать ОК.
База данных по-прежнему остается открытой. При очередном ее открытии система Access запрашивать пароль не будет.Средств изменения пароля Б Д в Access нет, поэтому для изменения парол я следует удалить пароль, а затем определить новый. При использованиипарольной защиты нужно учитывать, что она не защищает Б Д от удаления.Если пароль утерян, то доступ к защищенной БД не получить. Попавшую втакое положение БД остается удалить.
Для удаления Б Д можно воспользоваться, например, программой MS Windows П р о в о д н и к (Windows Explorer). Удалить БД, не выходя из Access, можно так: вызвать окно открытия файла базыданных, выделить удаляемую БД, вызвать контекстное меню и выбрать пунктУ д а л и т ь ( D e l e t e ) . После выполнения операции удаления БД последняя попадетв Корзину.З а щ и щ а я паролем, следует иметь в виду, что в случае связываниятаблицБД, защищенных паролем, могут быть проблемы.