
- •Тема 1.Корпоративные информационные системы. Задача интеграции. Корпоративные системы.
- •Модель osi – набор стандартов для построения корпоративной системы
- •Интегрированные и комплексные приложения
- •Задача: общие данные, общие процедур, общие вычислительные ресурсы.
- •Проблемы на пути интеграции
- •Тема 2.Прозрачность. Открытость. Масштабируемость. Концепции аппаратных решений. Определение распределенной системы. Прозрачность.
- •Открытость.
- •Масштабируемость.
- •Параллелизм.
- •Raid-технологии.
- •Концепции аппаратных решений. Мультипроцессоры.
- •Гетерогенные мультикомпьютерные системы.
- •Симметричное мультипроцессирование
- •Кластеры.
- •Тема 3.Двухуровневые, трехуровневые, распределенные одноранговые информационные системы. Виды ис
- •Функциональная нагрузка компонентов в ис
- •Двухуровневые архитектуры
- •Трехуровневые архитектуры
- •Распределенные одноранговые архитектуры
- •Единое информационное пространство. Подход к построению объектно-ориентированной одноранговой информационной системе.
- •Архитектура взаимодействия компонент распределенной ис
- •Тема 4.Обзор методов интеграции. Введение
- •Пути устранения аппаратных различий, кросс – платформенные приложения.
- •Java applets, апплеты.
- •Файлы (буферы) общего доступа.
- •Единый язык доступа к данным (sql).
- •Обмен сообщениями (dde).
- •Удаленный вызов процедур (rpc)
- •Вставка и внедрение объектов
- •Ole (связывание и внедрение объектов), ole Automation.
- •Классификация приложений по отношению к технологии ole (com).
- •ActiveX объекты.
- •Идентификация com объектов.
- •Сравнение com (ActiveX) объектов и java апплетов.
- •Доступ к удаленным объектам (dcom, .Net, corba)
- •Использование командных файлов и скриптов
- •Доступ к базам данных (ado, dao, odbc)
- •Применение web-технологий
- •Именованные каналы
- •Процедуры, функции, передача параметров, область видимости.
- •Типы данных.
- •Вызов макроса с вычисляемым именем
- •Запуск макроса в заданное время
- •Запуск внешней программы, управление ею
- •Вызов api-функций и других библиотечных функций
- •Программное изменение кода.
- •Динамические массивы
- •Объектно-ориентированное программирование Базовые понятия ооп
- •Расширение объектной модели
- •Коллекция
- •Раннее и позднее связывание
- •Дополнительные элементы управления (ActiveX –объекты)
- •Описание программирования в vba, модели com Доступ к вставленным в документ ole-объектам
- •Доступ к внешним com-серверам
- •Вычисляемые свойства, свойства только для чтения.
- •События. Обработчики событий.
- •Использование событий объекта Application
- •Использование диалогов
- •Свойство для программиста.
- •Пользовательские классы. Классы.
- •Класс, объекты которого реагируют на события.
- •Моделирование наследования. Фактическое наследование. WithEvents.
- •Пользовательские события.
- •Как исп польз события
- •Создание экземпляра класса.
- •Автоматическая сборка мусора
- •Уничтожение экземпляра класса
- •???Интерфейсы.
- •Тема 6.???Интеграция при помощи промежуточного буфера
- •Тема 7.Обмен сообщениями. Протокол dde.
- •Задачи интеграции и децентрализации.
- •Фрагментация данных и размещение
- •Язык доступа к данным sql Стандартные команды
- •Язык запросов
- •Изменение данных при помощи sql
- •Изменение структуры базы данных при помощи ddl
- •Выполнение команд изменения структуры, изменения базы данных
- •Расширения Jet 4.0 ansi-92
- •Доступ к базам данных.
- •Доступ к базам данных с помощью odbc.
- •Доступ через odbc из Delpi7.
- •Доступ к базам данных с помощью технологий ado. Соединение, курсор
- •Свойства и методы набора записей (курсора).
- •Вызов отчетов, сформированных в базе данных
- •Пример dao
- •???Доступ к базам данных с помощью технологий dao.
- •Удаленный вызов процедур.
- •Обращение к удаленным объектам. Привязка клиента к объекту. Статическое и динамическое удаленное обращение к методам. Передача параметров. Dce, rmi.
- •Тема 13.Распределенная система объектов corba. Введение.
- •Архитектура системы.
- •Структура связей corba.
- •Исключения corba.
- •Передача параметров.
- •Corba-объекты и серванты.
- •Отображение idl на языки программирования
- •Объектные адаптеры.
- •Транзакции и сервис транзакций в corba.
- •Тема 14.Обзор технологий dcom, .Net Определение
- •Немного истории
- •Решение .Net
- •Модель .Net
- •Обзор двоичных файлов .Net.
Запуск внешней программы, управление ею
Внешнюю программу, то есть любой выполняемый файл, можно запустить, воспользовавшись функцией SHELL(полное имя, стиль окна). В случае успешного выполнения этой функции, она возвращает идентификатор задачи.
Очень важно то, что запуск внешней задачи при помощи Shell осуществляется в асинхронном режиме! Если же Вы запускаете внешнее приложение с помощью CreateObject или GetObject, то такой запуск осуществляется в синхронном режиме, по крайней мере, ожидается окончание выполнения кода обработчика события «открытие документа». Кроме того, при помощи Shell можно запустить любой выполняемый файл, а при помощи CreateObject – только COM-сервер.
Запущенным по команде Shell приложением можно управлять. Для этого следует его активизировать – оператор AppActivate, а затем отправить ему команды, имитируя клавиатурный ввод – оператор SendKeys. Второй параметр команды SendKeys определяет, ожидать или нет завершения указанной операции.
В примере ниже открывается «Блокнот», затем активизируется его окно. В текстовое окно записывается выражение, в котором складываются несколько подряд расположенных чисел (от 1 до 50). Затем закрывается окно Блокнота, причем передается имя файла для сохранения.
Dim RetVal
RetVal = Shell("E:\WINDOWS\NOTEPAD.EXE", 1) ' запуск блокнота
AppActivate RetVal ‘ блокнот располагается сверху всех окон
For i = 1 To 50 '
SendKeys i & "{+}", True ' в текстовое окно вносится выражение 1+2+3+..+50
Next
SendKeys "%{F4}", True ' закрываем окно
SendKeys "{ENTER}", True ' отвечаем на появившийся запрос, что хотим сохранить
SendKeys "g:\ttt{ENTER}{ENTER}", True ' задаем имя файла, и окно закрывается
Вызов api-функций и других библиотечных функций
В программе на VBA можно обратиться к встроенным в Windows функциям API. Эти функции размещаются во многочисленных динамически подключаемых библиотеках, т.е. в DLL. Библиотеки располагаются чаще всего в каталоге windows\system32.
Для внешней функции необходимо в общей области дать предварительное описание. Описание API функций Вы можете найти в специальной литературе, в SDK-справочнике, MSDN - справочнике.
А узнать о том, в какой библиотеке, что лежит, можно, например, следующим образом: открыть файл с расширением dll блокнотом и поискать (Ctrl+F) имя нужной вам функции.
В приведенном примере объявляется функция Sleep – «засыпание». Важно, что несмотря на то, что почти всюду в Windows регистр букв не важен, здесь, если вы укажите имя функции с маленькой буквы (sleep), то будет выдано сообщение об ошибке «Can’t find DLL entry point sleep in kernel32.dll».
Declare Sub Sleep Lib "kernel32.dll" (ByVal dwM As Long)
Sub try()
Sleep 2000
MsgBox "111"
End Sub
Программное изменение кода.
Обратите внимание на это, в VBA нет функции eval(), которая есть в JavaScript, поэтому программно сформировать, а потом выполнить произвольный программный код несколько сложнее, не ясно, как перейти от имени объекта к самому объекту.
Для решения второй задачи рекомендуется всегда создаваемые объекты помещать в коллекцию, давая имя элементу коллекции такое же, как имя объекта. В таком случае в дальнейшем можно обратиться к элементу коллекции по имени, получая тем самым объект.
Рассмотрим пример. Пусть в проекте описан класс с именем fragm:
Public name As String, val As Integer
Private Sub Class_Initialize()
name = "f" & Int(Rnd * 10000) 'формирование случайного имени вида f567
val = Rnd * 20 + 10 ' случайное значение от 10 до 30
End Sub
В форме заводим список имен формируемых экземпляров
Dim cl_f As New Collection
Private Sub UserForm_Initialize()
Dim f As fragm, i As Integer
Randomize
For i = 1 To 10
Set f = New fragm
cl_f.Add f, f.name
ListBox1.AddItem f.name
Next
End Sub
По щелчку пользователя на пункт списка выдается сообщение – значение элемента коллекции с выбранным именем.
Private Sub ListBox1_Click()
MsgBox cl_f(ListBox1.List(ListBox1.ListIndex)).val
End Sub
Объект VBE предоставляет возможности для программного изменения операторов. В коллекции проектов содержатся проекты всех открытых документов. Компоненты – это ThisDocument, формы, модули, модули классов в том порядке, в каком они указаны в окне проекта. К любому из них можно обратиться по номеру или по имени. Свойство CodeModule предоставляет объект, с помощью которого можно работать с программными инструкциями. Можно изменять строки, можно удалять и добавлять строки, можно добавлять текст из строки или из текстового файла.
В примере текст программы содержится в модуле1 (никаких форм нет). В программе сначала удаляется строка из макроса changecode, затем вставляется другая строка и вызывается измененный макрос. Комбинация Chr(34) возвращает знак «кавычки».
Sub try()
j = 2: ns = 11
With VBE.VBProjects(1).VBComponents(j).CodeModule
.DeleteLines ns, 1
.InsertLines ns, "MsgBox " & Chr(34) & "22222" & Chr(34)
End With
changcode
End Sub
Sub changcode()
MsgBox "11111"
End Sub