Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access_2007.doc
Скачиваний:
257
Добавлен:
17.03.2015
Размер:
20.6 Mб
Скачать

На профессиональном уровне. Макрокоманды, которым Access не доверяет

Ниже приведен перечень наиболее распространенных потенциально опасных макрокоманд.

  • Удаление объекта. Очевидно опасное действие.

  • Печать объекта. Неизвестно, сколько бумаги вам понадобится для печати.

  • Копирование объекта. Злоумышленник может использовать это действие для создания макроса, который заполнит вашу БД.

  • Сохранение объекта. Это действие может показаться совершенно невинным, но его легко объединить с другими действиями для создания макроса, изменяющего объект БД и впоследствии сохраняющего поддельную версию объекта.

  • Копирование файла вашей БД. В конечном счете, это действие может перезаписать копию, которую вы уже сделали, или заменить какой-либо важный файл. Экспорт данных считается столь же рискованным.

  • Раскрытие окна на весь экран, сворачивание окна на панель задач и перемещение окна. Возможно, корпорация Microsoft перестраховывается, решив не доверять подобным макрокомандам, которые позволяют менять местоположение форм и других окон. В любом случае эти макрокоманды используются нечасто в Access 2007, поскольку они не применимы в случае окон со вкладками, а могут использоваться только в случае редко применяемых свободно плавающих окон.

  • Выполнение команд SQL. Как вы узнали из разд. "Режим SQL" главы 6, SQL — это язык, лежащий в основе запросов программы Access. Вы можете применять непосредственно команды SQL для выполнения практически любой задачи в вашей БД, начиная от удаления десятков записей и заканчивая созданием новой таблицы.

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

  • Пересылка случайных нажатий клавиш. Макрокоманда КомандыКлавиатуры (SendKeys) позволяет пересылать поток клавиатурных кодов в активное в данный момент окно. Вы можете сделать все что угодно, и в этом проблема. Респектабельные пользователи Access вообще избегают применения команды КомандыКлавиатуры, поскольку она содержит ошибки. (Фатальные проблемы возникают, если щелкнуть кнопкой мыши во время выполнения макроса, и приводят к направлению клавиатурных кодов совсем не в то окно, для которого они предназначались.)

Некоторые макрокоманды могут рассматриваться как опасные с учетом применяемых в них аргументов.

  • Завершение программы Access. Access позволяет выполнить, обычную макрокоманду Выход (Quit), в которой пользователю, работающему с БД, предлагается сохранить изменения, отменить их или отказаться от требования выхода из программы. Но макрокоманду Выход можно настроить так, что она будет закрывать программу немедленно без предложения сохранить что бы то ни было (или закрывать немедленно и сохранять все неподтвержденные изменения). Если использовать один из этих вариантов, Access трактует команду как опасную.

  • Отправка электронной почты. Эта макрокоманда считается опасной, если вы не разрешаете пользователю макроса перед отправкой подтвердить корректность электронного сообщения или отказаться от него.

Как Access обрабатывает опасные макросы

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

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

Примечание

Панель с сообщением можно скрыть. Если полагаете, что программа Access отключила неко­торые макросы, но не хотите видеть панель сообщений, выберите на ленте Работа с базами данных Показать или скрыть Панель сообщений (Database Tools → Show/Hide → Message Bar).

Рис. 15.9. На панели сообщений выводится угрожающее предупреждение. Для повторного включения опасных макросов в вашей БД щелкните мышью кнопку Параметры и затем в появившемся окне (см. рис. 15.10) выберите переключатель Включить это содержимое. Разрешение, которое вы установите, продлится до тех пор, пока БД будет открыта, поэтому выбирать переключатель Включить это содержимое придется при каждом открытии БД. Можно также щелкнуть кнопкой мыши ссылку Открыть центр управления безопасностью (показанную на рис. 15.10) для того, чтобы настроить параметры безопасности на более длительный период

Рис. 15.10. При щелчке мышью кнопки Параметры (см. рис. 15.9) программа Access растолковывает проблему с помощью этого слегка замысловатого поля Сообщение. Выберите переключатель Включить это содержимое, щелкните мышью кнопку ОК и спокойно действуйте дальше

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

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

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

  • Щелчок в тысячный раз переключателя Включить это содержимое может вывести из равновесия. Уж поверьте.

Центр управления безопасностью

Так вы не хотите видеть панель сообщений при каждом открытии БД? Программа Access предоставляет три способа, облегчающих работу с БД, содержащими опасные макросы.

  • Можно понизить уровень безопасности программы Access настолько, что опасные макросы будут разрешены. Такой подход не рекомендуется, т. к. он разрешает выполнение любого кода, включенного в вашу БД. Если случайно вы откроете БД, содержащую код, провоцирующий аварийные ситуации, никакой защиты у вас не будет.

  • Вы можете попросить программу Access доверять файлам БД, хранящимся в определенных папках на вашем компьютере (или на других компьютерах). Это самый удобный метод действия.

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

Все описанные действия выполняются в одном и том же окне — Центре управления безопасностью (рис. 15.11). Для вывода его на экран в диалоговом окне Параметры безо­пасности Microsoft Office (см. рис. 15.10) щелкните кнопкой мыши ссылку Открыть центр управления безопасностью. Или примените следующий, более обходной путь.

  1. Выберите кнопку Office Параметры Access.

  2. В окне Параметры Access выберите Центр управления безопасностью (Trust Center).

  3. Щелкните мышью кнопку Параметры центра управления безопасностью (Trust Center Settings).

Центр управления безопасностью включает шесть разделов.

■ Раздел Надежные издатели (Trusted Publishers) позволяет сообщить Access, что следует доверять БД с цифровой подписью определенных людей. Для того чтобы воспользоваться этим средством, вашей компании нужно купить цифровой сертификат у такой компании,

как VeriSign (www.verisign.com). Затем, когда вы откроете подписанную БД, про­грамма Access свяжется с компанией, выдавшей сертификат, и проверит его правомер­ность. Если он действителен, все законно, БД надежна и все опасные макросы разреше­ны. Цифровые сертификаты не рассматриваются в этой книге.

Рис. 15.11. Раздел Параметры макросов позволяет задать реакцию Access на опасные макросы. Вы можете выбрать включение или отключение опасных макросов и попросить Access уведомлять вас или не уведомлять об отключении чего бы то ни было

Примечание

Если заниматься раскопками длительное время, можно обнаружить, что у корпорации Microsoft есть средство (называемое makecert.exe) для генерации собственных цифровых сертификатов. Но это только тестовое средство, поскольку созданные с его помощью сертификаты не дейст­вуют на других компьютерах. Остерегайтесь — некоторые книги и Web-сайты по Access могут сбить с пути.

  • Раздел Надежные расположения (Trusted Locations) позволяет выбрать места на вашем жестком диске для хранения ваших БД. В этом случае Access будет доверять только вашим файлам БД и никому другому. Вы узнаете, как задавать надежное расположение, в следующем разделе.

  • Раздел Надстройки (Add-ins) разрешает определить, следует ли поддерживать дополнительные модули (add-ins) (мини-программы, расширяющие функциональные возможности Access), даже если они созданы не подтвержденным издателем. Обычно все дополнительные модули разрешены. (В конце концов, если вы не доверяете какому-либо дополнительному модулю, не устанавливайте его!) Эти установки применяются только в

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

  • Раздел Параметры макросов (Macro Settings) позволяет настроить обработку макросов программой Access. Вы можете сделать ее более строгой (запретив все макросы, если они не принадлежат надежному издателю) или менее (разрешив все макросы, независимо от того, что они могут делать). Лучше всего оставить стандартный выбор Отключать все макросы с уведомлением.

  • Раздел Панель сообщений (Message Bar) позволяет задать, нужно ли программе Access отображать панель сообщений, когда программа блокирует опасные макросы в ненадеж­ной БД.

  • Раздел Параметры конфиденциальности (Privacy Options) позволяет настроить не­сколько параметров, вообще не связанных с макросами. Можно задать необходимость проверки в Интернете обновлений файлов справки программы и отправки корпорации Microsoft информации о сбоях при обнаружении проблем (таким образом, Microsoft сможет найти ошибки и узнать, как улучшать программу Access в дальнейшем). Если вас беспокоят интернет-злоумышленники, можно отключить некоторые из этих средств. Чаще всего эти параметры необходимы лишь теоретикам конспирации.

Задание надежного расположения

Хорошо было бы иметь возможность различать ваши БД, содержащие абсолютно безопас­ный код, и все остальные? Для облегчения решения этой задачи в Access 2007 включено но­вое средство. Оно позволяет определить конкретную папку на вашем жестком диске как надежное расположение. Если открыть БД, хранящуюся в этой папке, Access автоматически будет доверять ей и разрешит опасные макросы.

Примечание

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

Далее описаны действия, необходимые для создания нового надежного расположения.

1. Откройте окно Центр управления безопасностью (Trust Center).

Если вы его еще не открыли, следуйте указаниям, приведенным в предыдущем разделе.

2. Откройте раздел Надежные расположения (Trusted Locations).

Вы увидите окно, в котором перечислены все надежные расположения (рис. 15.12). Сна­чала в список включается одно расположение: папка ACCWIZ, которую программа Access использует для хранения своего мастера.

3. Убедитесь в том, что сброшен флажок Отключить все надежные расположения…

Если флажок установлен, сбросьте его, прежде чем добавлять новое надежное располо­жение.

4. Если вы хотите доверять папке в сети вашей компании или домашней сети, установите флажок Разрешить надежные расположения в моей сети.

Эта установка немного рискованна, поскольку сетевое расположение находится вне ва­шего контроля. Хакер может вставить зараженную вирусом БД в это расположение

незаметно для вас. Но если вы абсолютно уверены в безопасности сети (и другие пользова­тели, применяющие эту папку, не будут загружать БД из Интернета и помещать их в это расположение), можно не беспокоиться.

Рис. 15.12. В данном примере добавлено новое надежное расположение для папки FunkyAccessFiles, находящейся на жестком диске в папке My Documents

Рис. 15.13. Для настройки надежного расположения необходимо указать путь (щелкните мышью кнопку Обзор, чтобы найти нужную папку). Вы также можете решить, доверять ли вложенным папкам и вставить необязательное описание, которое выводится в списке надежных расположений

  1. Щелкните мышью кнопку Добавить новое расположение (Add new location). Программа Access запросит некоторую дополнительную информацию (рис. 15.13).

  2. Для включения нового расположения в список щелкните мышью кнопку ОК.

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

Три примера макросов

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

Полный перечень макрокоманд содержит множество действий, которые не так уж инте­ресны или относятся только к проектам определенных типов (например, проекты Access, выходящие на БД SQL Server, которые будут рассматриваться в главе 18). В следующих разделах представлено несколько наиболее полезных макрокоманд. Вы можете проверить их на загружаемых из Интернета примерах к данной главе или испытать рецепты быстрого приготовления в своей собственной БД.

Поиск записи

Макрокоманда НайтиЗапись (FindRecord) работает аналогично средству Поиск на листе данных, которое обсуждалось в разд. "Поиск" главы 3. Все необходимую для поиска инфор­мацию вы задаете в аргументах.

Скажем, вы хотите искать слово "hay" (сено) в поле Diet (пищевой рацион) таблицы AnimalTypes. Далее перечислены макрокоманды, которые вы можете использовать.

  • ОткрытьФорму (OpenForm) для открытия формы, отображающей найденную запись (в данном случае AnimalTypes). Эту команду можно заменить макрокомандой ОткрытьТаблицу (OpenTable) и выполнять поиск на листе данных.

  • К ЭлементуУправления (GoToControl) для перехода к полю, в котором будет выполняться поиск (в данном случае Description). Если вы хотите применить поиск во всех полях, этот пункт можно пропустить.

  • НайтиЗапись (FindRecord) для поиска текста. Вы решаете, начать поиск с первой или с текущей записи, как в данном примере. Можно также выбрать поиск текста в любом месте поля или потребовать, чтобы значение поля целиком совпадало со строкой поиска.

Когда вы соберете все команды вместе, получится нечто похожее на приведенные в табл. 15.1 строки.

Таблица 15.1. Макрос поиска записи

Макрокоманда

Важные аргументы1

Описание

ОткрытьФорму

Имя формы: AnimalTypes

Открывает форму. Если она открыта, переключает в существующее окно

1 Вы можете применять значения по умолчанию и во всех остальных аргументах.

Таблица 15.1 (окончание)

Макрокоманда

Важные аргументы2

Описание

КЭлементу Управления

Имя элемента: Diet

Переходит к полю Diet

НайтиЗапись

Образец поиска: ="hay"

Совпадение: С любой частью поля

Только в текущем поле: Да

Первое вхождение: Нет

Находит заданный текст в любой части поля Diet, начиная с текущей записи

Примечание

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

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

Подсказка

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

Печать отчета

Вам нужен полезный макрос, автоматически выдающий часто используемый отчет? Про­грамма Access предоставляет несколько возможностей. Далее приведены две из них.

  • Если вы хотите использовать стандартные параметры печати, можно напечатать отчет с помощью макрокоманды ОткрытьОтчет с аргументом Режим, имеющим значение Печать.

  • Если вы хотите отрегулировать качество печати, задать число копий и номера начальной и конечной страниц, вам нужно применить трехшаговый подход. Начать с команды ОткрытьОтчет, применить команду Печать (PrintOut) для отправки отчета и закончить командой Закрыть (Close) для корректного выхода.

Подсказка

Не пытайтесь применять любой из этих методов с ненадежными БД — Access не разрешит вам их применить.

Приведенная в табл. 15.2 последовательность макрокоманд демонстрирует второй метод. Этот макрос, используя отчет CheapskateCustomers (прижимистые клиенты), печатает две

2Вы можете применять значения по умолчанию и во всех остальных аргументах.

копии списка так называемых клиентов, которые на самом деле еще не заказали ни одной вещи.

Таблица 15.2. Макрос печати отчета

Макрокоманда

Важные аргументы 3

Описание

ОткрытьОтчет

Имя отчета: CheapskateCustomers

Открывает отчет (но как вы увидите, он появится через пару секунд)

Печать

Число копий: 2

Можно использовать другие аргументы для печати только диапазона страниц или изменения качества. Но нельзя вы­брать принтер

Закрыть

Тип объекта: Отчет Имя объекта: CheapskateCustomers

Нет смысла оставлять отчет открытым после того, как он отправлен на печать

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

Подсказка

Есть еще одна возможность. Можно открыть таблицу или отчет с аргументом Режим, имею­щим значение Просмотр (Print Preview). В этом случае данные на самом деле не посылаются на принтер, но приближают на шаг к этой операции. Это лучший выбор, если вам нужно выбрать принтер, убедиться в корректности данных и проверить объем предназначенной для печати информации. Он также работает с ненадежными БД.

Отправка данных по электронной почте

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]