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



ЗНАЕТЕ ЛИ ВЫ?

Запуск других Windows-программ

Поиск

Как мне открыть Word (или Excel, или Блокнот (Notepad) или танцевальную видеоигру Dance Dance Revolution)?

В язык Visual Basic включена функция shell, которая позволяет запускать другую про­грамму. Для применения функции Shell необходимо задать полный путь, указываю­щий на файл программы. Вот приведен пример запуска Windows-программы Калькуля­тор:

Shell "C:\Windows\calc.exe"

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

Shell кажется удобной функцией, но у нее есть существенная проблема. Для того чтобы использовать функцию Shell, нужно знать точное местонахождение программы. Вы не можете просто сказать: "Запусти Microsoft Word" или "Открой этот документ". Вместо этого вы должны глубоко зарыться в файловую систему жесткого диска, чтобы найти файл нужной программы (который обычно находится где-то в зоне вашего компьютера с именем Program Files). Хуже того, после того как вы заставили функцию Shell рабо­тать на вашем компьютере, нет никакой гарантии, что она заработает на какой-либо дру­гой машине — в конце концов, та же программа может быть установлена где-то совсем в другом месте.

И как с этим бороться? Можно воспользоваться гиперссылкой, которая запускает нуж­ную программу автоматически, если по ссылке щелкнуть кнопкой мыши. Но некоторые программы, включая других членов семейства Microsoft Office, предлагают лучший ва­риант. Они предоставляют собственные объекты, которыми можно манипулировать в коде на языке Visual Basic. Благодаря этим объектам можно применять эти программы, не беспокоясь об их местонахождении. Вы конечно же можете делать с ними гораздо больше, задавая различные свойства и вызывая разнообразные методы.


Можно заставить программу Word открыть документ, добавить в него некоторый текст, отправить 10 копий на принтер и затем завершить программу.

Объекты, реализующие этот процесс, не рассматриваются в данной книге, но далее при­веден очень простой пример, который запускает программу Word, выводит на экран ок­но программы и загружает в нее документ GothicWedding.doc:

Dim Word As Object

Set Word = CreateObject("Word.Application")

Word.Visible = True

Word.Documents.Open CurrentProject.Path & "\GothicWedding.doc"

Если эта технология заинтересовала вас, обратитесь к справочной системе программы Word, из нее можно узнать гораздо больше об объектной модели Word. Другой полез­ный ресурс — Microsoft's Office Developer Center (Центр разработчиков Microsoft Office) на Web-сайте http://msdn.microsoft.com/office.

 

Объект DoCmd

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

В отличие от виденных вами ранее объектов, у объекта DoCmd нет никаких свойств. Вме­сто этого он состоит из методов, выполняющих разные действия. Если нужно открыть фор­му с именем ProductCatalog, можно использовать метод OpenForm следующим образом:

DoCmd.OpenForm "ProductCatalog"

Как большинство методов объекта DoCmd, OpenForm может использовать несколько не­обязательных параметров. Visual Basic подскажет, отобразив список возможных параметров в процессе ввода имени метода. Далее показан пример, в котором пропущены второй и тре­тий параметры (обратите внимание на запятые без значений между ними), но задается фильтр в четвертом параметре и режим данных в пятом:

DoCmd.OpenForm "ProductCatalog",,,"ID=5", acFormReadOnly

Эта команда открывает форму ProductCatalog, применяет фильтр для вывода на экран одной записи с ID (Код), равным 5, и использует режим "только чтение" для запрета каких-либо изменений.

 

Примечание

В данном примере используется константа acFormReadOnly. Константы — это числовые значения, которым присвоены более информативные имена. Таким образом вместо запомина­ния числа, обозначающего режим "только чтение", можно применять более осмысленную кон­станту acFormReadOnly. Всегда, когда встречается переменная, начинающаяся с ас или vb, и вы ее не создавали сами, знайте, что это константа. Конечно, для того чтобы пользоваться константами, нужно все-таки знать их имена, но в этом может помочь средство IntelliSense, как показано на рис. 17.8.



Рис. 17.8. Когда вы добираетесь до параметра режима данных, редактор Visual Basic выводит на экран список всех допустимых констант, которые можно использовать. Для того чтобы выяснить, что они означают (если это не очевидно), следует обратиться к справочной системе Access

 

 

Метод OpenForm может показаться знакомым, потому что вы уже видели такие же функции в макрокоманде ОткрытьФорму (OpenForm) (см. главу 15). В действительности все методы объекта DoCmd соотносятся с макрокомандами, которые вы изучали в главе15. В табл. 17.1 перечислены наиболее полезные методы.

Таблица 17.1. Полезные методы объекта DoCmd

Метод Описание
ApplyFilter Применяет фильтр к таблице, форме, запросу или отчету для того, чтобы сконцентрировать внимание на интересующих вас записях
Веер Производит некоторый сигнал. Обычно используется для привле­чения внимания к возникшей проблеме
Close Закрывает текущий объект БД (или конкретный объект, который задан)
CopyDatabaseFile Предоставляет быстрый способ создания резервной копии БД
FindRecord, FindNext и GoToRecord Предоставляет разные способы поиска нужной записи
Hourglass Включает отображение указателя мыши в виде песочных часов (или выключает). Применяется для того, чтобы дать знать пользо­вателю о том, что выполняется требующая времени задача и сле­дует остыть

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

Метод Описание
OpenForm, OpenQuery, OpenReport и ОреnТаblе Открывает соответствующий объект БД в нужном вам режиме пред­ставления с параметрами фильтрации и необязательными уточне­ниями. Как вы узнали в главе 15, можно применять макрокоманду ОткрытьОтчет (OpenReport) для печати отчетам команду От-крытьЗапрос (OpenQuery) для выполнения запроса на изменение
Printout Предлагает один вариант печати данных из текущего объекта БД
Quit Завершает работу программы Access
RunCommand Замещающая команда, которая позволяет выполнить различные команды Access, представленные на ленте. Необходимо только задать правильную константу. В разд. "Управление выполнением заказов" далее в этой главе приведен пример, в котором про­граммист применяет метод RunCommand для немедленного со­хранения текущей записи
RunMacro Выполняет макрос
RunSQL Выполняет групповой SQL-оператор. Эту команду нельзя исполь­зовать для извлечения данных из вашей БД. Она позволяет вы­полнять команды, которые изменяют записи или таблицы
ShowAllRecords Удаляет параметры текущего фильтра, поэтому можно увидеть все записи в таблице, форме, запросе или отчете

Преобразование макроса в VB-код

Если хотите узнать больше о языке Visual Basic и объекте DoCmd, можно взять существую­щий макрос и преобразовать его в чистый программный код, подпрограмму. Далее приведе­ны необходимые действия.

1. В области переходов выберите макрос, который хотите использовать.

2. Выберите на ленте Работа с базами данных → Макрос → Преобразовать макросы (Database Tools Macro Convert Macros to Visual Basic). Можно также преобразовать внедренный в форму макрос, открыв форму и выбрав на ленте Работа с базами данных → Макрос →Преобразовать макросы формы (Database Tools Macro Convert Form's Macros to Visual Basic).

 
 

На экране появится окно с двумя параметрами для выбора (рис. 17.9).

 

Рис. 17.9. Вы увидите это окно, если попросите программу Access преобразовать макрос FindHayEater


3. Если хотите добавить базовую обработку ошибок, убедитесь в том, что флажок Добавить программу обработки ошибок (Add error handling to generated functions) установлен.

Немного обработки ошибок никогда не помешает.

4. Если хотите включить комментарии макроса в комментарии VB, убедитесь в том, что установлен флажок Добавить примечания макросов (Include macro comments).

Если вы потратили время на добавление пояснительного текста, стоит сохранить его.

5. Щелкните мышью кнопку Преобразовать (Convert).

Программа Access создаст новый модуль для преобразованного кода и даст ему имя, по­добное имени Преобразованный макрос- [ИмяВашегоМакроса] (Converted Macro-[YourMacroName]). Внутри модуля Access создаст функцию с именем как у вашего мак­роса. Если преобразуется группа макросов (см. разд. "Группы макросов" главы 15), Access вставит по одной подпрограмме для каждого макроса в группе.

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

В следующем примере показан результат преобразования макроса из главы 15 (приведенного в разд. "Поиск записи" главы 15), который ищет определенный текст в табли­це AnimalTypes:

Function FindHayEater ()

On Error GoTo FindHayEater_Err


DoCmd.OpenForm "AnimalTypes", acNormal, " ", " ",, acNormal

DoCmd.GoToControl "Diet"

DoCmd.FindRecord "=""hay""", acAnywhere, False,, _

False, acCurrent, False

 

FindHayEater_Exit: Exit Function

FindHayEater_Err:

MsgBox Error$

Resume FindHayEater_Exit End Function

Вы заметите, что в преобразованном коде интенсивно используется объект DoCmd — действительно почти в каждой строке кода встречается объект DoCmd. Сначала он применяется в методе OpenForm для открытия формы, затем — в методе GoToControl для перехода в поле Diet и, наконец, он ищет первую запись, в которой встречается текст "hay". Эта строка выглядит причудливо, поскольку в ней удваиваются знаки кавычек (""). В языке Visual Basic знаки кавычек имеют особый смысл (они показывают, где начинается и заканчиваетсятекст). Если в текстовом фрагменте вы хотите на самом деле использовать кавычки, нужно поместить знаки кавычек дважды, одни за другими. Стрнно, но правильно.


Завершается код процедурой обработки ошибок, названной FindHayEater__Err, которая просто сообщает о проблеме в окне сообщения и затем завершает работу.

 

 

Примечание

Когда макрос преобразуется в программный код, программа Access всегда генерирует функ­цию, а не процедуру. Но функция не возвращает результат, т. к. этого не требуется. (По-видимому, Access действует таким образом, чтобы дать вам возможность позже воспользо­ваться возвращаемым результатом.)

 

 



Поделиться:


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

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