Публикация данных на сервере FTP

В Microsoft Office 2002 (как и в предыдущей версии Office 2000) есть возможность сохранить открытый документ на сервере FTP. Чтобы опубликовать на сервере FTP открытую в Access 2010 страницу доступа к данным, или объект базы данных, сохраняемый в формате страницы доступа к данным, или документ, открытый в приложении Word 2002 или FrontPage 2002:

  1. Откройте окно сохранения документа, выбрав команду Файл, Сохранить как (File, Save As). Если сохраняете объект базы данных, в появившемся диалоговом окне выберите тип Страница доступа к данным (Data Access Page).
  2. Появится диалоговое окно, представленное на, с заголовком Новая страница доступа к данным (New Data Access Page) или диалоговое окно Сохранение документа (Save As). В списке Папка (Save in) выделите элемент Адреса FTP (FTP Locations).
  1. В списке Имя файла (File name) задайте имя публикуемого файла, в списке Тип файла (Save as type) выберите его тип.
  2. Если нет ни одного подходящего элемента в списке узлов FTP, дважды щелкните по ярлыку Добавить/изменить адреса FTP (Add/Modify FTP Locations). В появившемся диалоговом окне введите имя FTP-сервера, а если нужный адрес FTP уже присутствует в списке, просто выделите его. Нажмите кнопку ОК. В списке адресов FTP появится новый элемент, выделите его.
  3. Нажмите кнопку Сохранить (Save) или ОК.

Чтобы опубликовать на сервере FTP объект базы данных Microsoft Access 2010:

  1. В окне базы данных выделите публикуемый объект, например таблицу или страницу доступа к данным.
  2. Выберите команду Файл, Экспорт (File, Export). Появится диалоговое окно Экспорт объекта (Export To) .
  3. В списке Папка (Save in) выделите элемент Адреса FTP и выполните шаги 3, 4 предыдущей процедуры публикации документа на сервере FTP.
  4. Нажмите кнопку Экспорт (Export).

 
В Microsoft Office 2002 появилось много новых возможностей, благодаря которым разработка с его помощью корпоративных приложений, используемых в масштабах корпоративных сетей и всего Интернета, стала еще более удобной и мощной.
Корпорация Microsoft предоставила удобный интерфейс и обеспечила достаточно широкий спектр возможностей по применению технологии Интернет в приложениях Office 2002. Эта глава была посвящена обзору и способам применения Web-технологий в приложениях Access 2010.

 

Программирование в Access 2002
Данная глава посвящена основному средству программирования в Access 2010 — языку программирования Visual Basic for Applications (VBA). Язык программирования VBA является общим инструментом для всех приложений Microsoft Office, позволяющим решать любые задачи программирования, начиная от автоматизации действий конкретного пользователя и кончая разработкой полномасштабных приложений, использующих Microsoft Office в качестве среды разработки.
Цель этой главы — дать читателю основные сведения как о самом языке, так и о тех инструментальных средствах, которые предоставляет разработчику приложений среда Access 2010.
Поскольку Visual Basic for Applications является объектно-ориентированным языком программирования, будут описаны объектные модели, которые могут использоваться в Access 2010. Это не только собственная объектная модель Access, но и объектные модели Visual Basic for Applications и Microsoft Office, которые являются общими для всех приложений семейства. Основная работа в приложениях Access — это работа с данными, поэтому будут рассмотрены также библиотеки управления данными: DАО (Data Access Objects), ADO (ActiveX Data Objects), JRO (Jet and Replication Objects).
Модель программирования в Access является событийно-управляемой, т. е. в процессе работы приложения возникают события, которые запускают специальные программы — обработчики событий. Большое количество разнообразных событий определено в таких объектах Access, как формы, отчеты и элементы управления в них. Мы подробно описываем эти события и последовательности их возникновения, т. к. искусство программирования в формах и отчетах включает в себя правильное определение того события, которое требуется обработать специальной программой.
Итак, в данной главе будут рассмотрены следующие вопросы:

  • Синтаксис языка Visual Basic for Applications
  • Интегрированная среда VBA, которая включает в себя как редактор кода программных модулей, так и большое количество средств отладки этого кода
  • Объектные модели, применяемые в приложениях Access
  • События форм, отчетов и элементов управления и последовательности их возникновения
  • Примеры применения процедур обработки событий в формах и отчетах

 
Язык Visual Basic для приложений (VBA)
Следующие ниже подразделы данного раздела описывают синтаксис языка программирования VBA.
Процедуры и функции, их вызов и передача параметров
Основными компонентами программы на VBA являются процедуры и функции, Они представляют собой фрагменты программного кода, заключенные между операторами Sub и End Sub или между операторами Function и End Function. Вот как может выглядеть процедура VBA:
Sub <имяПроцедуры> (<аргумент1>, <аргумент2>, … )
<onepaтopVisualBasic1> <onepaтopVisualBasic2>
End Sub
Функция отличается от процедуры тем, что ее имя выступает также в качестве переменной и используется для возвращения значения в точку вызова функции. Вот как может выглядеть функция:
F unction <имяФункции> (<аргумент1>, <аргумент2>, … )
<onepaторVisualBasicl> <onepaторVisualBasic2>
<имяФункции> = <возвращаемоеЗначение>
End Function
Для того чтобы использовать написанную вами процедуру или функцию, необходимо вызвать ее. Как же осуществляется вызов процедур и функций? Процедуру с непустым списком аргументов можно вызвать только из другой процедуры или функции, использовав ее имя со списком фактических значений аргументов в качестве одного из операторов VBA. Функцию же можно вызвать не только с помощью отдельного оператора VBA, но и поместив ее имя со списком фактических значений аргументов прямо в формулу или выражение в программе на VBA или, например, прямо в формулу в вычисляемых полях запросов, форм и отчетов Access. Процедура с пустым списком аргументов (так называемый командный макрос) может быть вызвана не только из другой процедуры или функции, но и с помощью комбинации клавиш быстрого вызова, команд раскрывающихся меню или кнопок панелей инструментов. Можно также связать такую процедуру с выполнением самых различных событий: например, с открытием формы или отчета, со щелчком мышью по кнопке в форме, с воздействием на элементы управления форм, в частности элементы управления ActiveX. Такие процедуры называют процедурами обработки событий. Понятно, что функции или процедуры, нуждающиеся в передаче им аргументов, таким способом вызвать нельзя. Подробнее о том, как создаются процедуры обработки событий, будет рассказано.
Если вызываемая процедура имеет уникальное имя и находится в том же модуле, что и вызывающая процедура, то для ее вызова достаточно указать это имя и задать список фактических значений аргументов, не заключая его в скобки. Второй способ вызова процедуры состоит в использовании оператора Call. Сначала идет оператор Call, затем имя процедуры и список параметров, в этом случае обязательно заключенный в скобки. Функцию можно вызывать точно так же, как и процедуру, но гораздо чаще используется другой, специфический способ вызова функций: использованием ее имени с заключенным в скобки списком параметров в правой части оператора присваивания.
Вот примеры вызова процедуры под именем CrossRC с передачей ей двух аргументов (константы и выражения):
CrossRC 7, i + 2
ИЛИ
Call CrossRC(7, i + 2)
А вот пример вызова двух функций — Left и Mid, и использования возвращаемого ими значения в выражении:
yStr = Left(y, 1) & Mid(у, 2, 1)
Допускается два различных способа передачи переменных процедуре или функции: по ссылке и по значению. Если переменная передается по ссылке, то это означает, что процедуре или функции будет передан адрес этой переменной в памяти. При этом происходит отождествление формального аргумента процедуры и переданного ей фактического параметра. Тем самым вызываемая процедура может изменить значение фактического параметра: если будет изменен формальный аргумент процедуры, то это скажется на значении переданного ей при вызове фактического параметра. Если же фактический параметр передается по значению, то формальный аргумент вызываемой процедуры или функции получает только значение фактического параметра, но не саму переменную, используемую в качестве этого параметра. Тем самым все изменения значения формального аргумента не сказываются на значении переменной, являющейся фактическим параметром.
Способ передачи параметров процедуре или функции указывается при описании ее аргументов: имени аргумента может предшествовать явный описатель способа передачи. Описатель ByRef задает передачу по ссылке, a ByVal — по значению. Если же явное указание способа передачи параметра отсутствует, то по умолчанию подразумевается передача по ссылке.
Поясним сказанное на примере. Пусть имеются следующие описания двух процедур:
Sub Main()
а = 10
b = 20
с = 30
Call Examplel(a, b, с)
Call MsgBox(a)
Call MsgBox(b)
Call MsgBox(c)
End Sub
Sub Example1(x, ByVal y, ByRef z)
x = x + 1
у = у + 1
z = z + 1
Call MsgBox(x)
Call MsgBox(y)
Call MsgBox(z)
End Sub
Вспомогательная процедура Examplel использует в качестве формальных аргументов три переменные, описанные по-разному. Далее в теле этой процедуры каждый из них увеличивается на единицу, а затем их значения выводятся на экран с помощью функции MsgBox. Основная процедура Main устанавливает значения переменных a, b и с, а затем передает их в качестве (фактических) аргументов процедуре Examplel. При этом первый аргумент передается по ссылке (действует умолчание), второй — по значению, а третий — снова по ссылке. После возврата из процедуры Examplel основная процедура также выводит на экран значения трех переменных, передававшихся в качестве аргументов. Всего на экран выводится шесть значений:

  • сначала это числа 11, 21 и 31 (все полученные значения увеличены на 1 и выводятся процедурой Examplel);
  • затем это числа 11, 20 и 31 (эти значения выводятся процедурой Main, причем переменные, переданные по ссылке, увеличились, а переменная, переданная по значению — нет).

Программа может состоять (и обычно состоит) из многих процедур и функций, которые могут располагаться в одном или нескольких модулях. Модули группируются в проекты, при этом в одном проекте могут мирно сосуществовать несколько различных программ, использующих общие модули или процедуры.
Каждая из процедур, находящихся в одном модуле, должна иметь уникальное имя, однако в проекте может содержаться несколько различных модулей. Обычно рекомендуется использовать только уникальные имена процедур в одном проекте, но допустимы и исключения. В том случае, если в проекте содержится несколько различных процедур с одним и тем же именем, необходимо для уточнения имени использовать при вызове процедуры следующий синтаксис:
<имяМодуля>.<имяПроцедуры>
Если при этом имя модуля состоит из нескольких слов, следует заключить это имя в квадратные скобки. Например, если модуль называется "Графические процедуры", а процедура — "Крестик", вызов может выглядеть следующим образом:
[Графические процедуры].Крестик
Допускается также использование процедур, расположенных и в других проектах. При этом может потребоваться еще один уровень уточнения имени:
<имяПроекта>.<имяМодуля>.<имяПроцедуры>