Литмир - Электронная Библиотека

Data1.Recordset.AddNew

End Sub

И наконец, в окне свойств списка и комбинированного списка определите свойство List добавив строки “Да” и “Нет”.

Запустите проект и добавьте записи в базу данных. Ввести значение в поле Depository можно выбрав “Да” или “Нет” в простом или комбинированном списке. При перемещении указателя текущей записи по набору записей в комбинированном списке будет отображаться “Да” или “Нет” в зависимости от содержимого поля Depository, в то время как в обычном списке значение поля будет выделяться подсветкой (рис. 8.2).

Интернет-журнал "Домашняя лаборатория", 2007 №4 - img_205

Рис. 8.2. Результат работы приложения

Контейнер OLE (OLE container)

Применение объекта OLE container дает возможность не только размещать на экранной форме приложения различные OLE-объекты, хранящиеся в базе данных, но и редактировать их. В качестве OLE-объектов могу выступать например: рисунки, документы Microsoft Word, таблицы Microsoft Excel, звуковые фрагменты и видеоклипы и многое другое. Посмотреть, какие OLE-объекты вы имеете возможность разместить в своей базе данных можно, например, выполнив команду меню Вставка->Объект текстового процессора Microsoft Word. В появившемся окне будет находиться список всех объектов OLE, зарегистрированных в вашей системе (рис. 8.3).

Интернет-журнал "Домашняя лаборатория", 2007 №4 - img_206

Рис. 8.3. Список OLE-объектов, зарегистрированных в системе

В своем приложении вы можете использовать либо внедренные (embedded) либо связанные (linked) объекты. Внедренные OLE-объекты содержат информацию как о самом объекте, так и о приложении его создавшем — OLE-сервере. Редактирование внедренного объекта можно проводить только с помощью приложения-клиента. В нашем случае это разрабатываемая СУБД. В отличие от внедренных, связанные OLE-объекты в базе данных сохраняют связь с объектом — оригиналом и любое изменение оригинала приведет к аналогичному изменению объекта, хранящегося в БД.

В базе данных формата MS Access внедренные объекты или ссылки на связанные объекты всегда хранятся в поле типа OLE Object. Понятно, что если вы создадите базу данных с документами Microsoft Word, то просматривать эту БД можно будет только на компьютере, на котором так же установлен этот текстовый процессор.

Контейнер OLE связывается с базой данных установкой свойств DataSource и DataField и его пиктограмма на панели инструментов —

Интернет-журнал "Домашняя лаборатория", 2007 №4 - img_207
.

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

Положим, что у на есть база данных OLEOBJ.MDB, таблица которой OBJ содержит поля, как показано в таблице.

Интернет-журнал "Домашняя лаборатория", 2007 №4 - img_208

Создайте новый проект и расположите на форме объект управления данными, две метки, два текстовых окна, OLE-контейнер и командную кнопку, как показано на рис. 8.4.

Интернет-журнал "Домашняя лаборатория", 2007 №4 - img_209

Рис. 8.4. Расположение элементов управления на экранной форме

Установите свойства объекта управления данными следующим образом. Свойство Caption определите как “OLE объекты”, свойство DatabaseName установите как имя файла базы данных C: \WORK\DB.MDB и укажите в качестве источника данных (свойство RecordSource) имя таблицы OBJ. Затем установите свойства меток, текстовых окон, контейнера OLE и командной кнопки:

Label1.Caption=Идентификатор

Label2.Caption=Описание

Text1.DataSource=Data1

Text1.DataField=Id

Text2.DataSource=Data1

Text2.DataField=Desc

OLE1.DataSource=Data1

OLE1.DataField=Obj

Command1.Caption=Добавить

Запустите проект. Если ваша базе данных не пуста и в ней есть какие-либо записи с OLE-объектами (в данном случае с помощью MS Access созданы две записи с математическим уравнением и рисунком), вы увидите, что в OLE-контейнере отобразится содержимое поля Obj первой записи (рис. 8.5).

Интернет-журнал "Домашняя лаборатория", 2007 №4 - img_210

Рис. 8.5. Результат работы приложения

Внедренные объекты можно редактировать. Нажатие правой кнопки мыши на OLE-контейнере приведет к появлению всплывающего меню с двумя пунктами: “Изменить” и “Открыть”. Выбор первого пункта позволит вам редактировать содержимое OLE-контейнера прямо в вашей экранной форме, в то время как выбор второго — приведет к запуску приложения-сервера и загрузке в него содержимого OLE-контейнера (рис. 8.6). В данном случае это будет редактор формул, входящий в поставку текстового процессора MS Word. После внесения необходимых изменений закройте приложение-сервер и убедитесь, что результаты редактирования отображены в базе данных.

Интернет-журнал "Домашняя лаборатория", 2007 №4 - img_211

Рис. 8.6. Запуск приложения-сервера

Таким образом мы создали приложение, которое позволяет не только просматривать, но и редактировать OLE-объекты, хранящиеся в базе данных. Это могут быть совсем разные объекты: математические уравнения, рисунки, текстовые документы, таблицы, диаграммы и др.

В нашем приложении осталась незадействована командная кнопка “Добавить”. Очевидно, что она должна быть предназначена для добавления новых записей в базу данных. Добавим в процедуру обработки события нажатия этой кнопки код, который позволит нам добавлять пустую запись в конец набора записей:

Private Sub Command1_Click()

Data1.Recordset.AddNew

OLE1.InsertObjDlg

End Sub.

Метод InsertObjDlg OLE-контейнера отображает на экране диалоговое окно выбора типа объекта (рис. 8.7). Отметив кнопку-переключатель Create New (Создать новый), вы можете вставить новый объект в базу данных, выбрав требуемый тип из списка зарегистрированных в системе объектов OLE. Выбор кнопки-переключателя Create from File (Создать из файла) позволит вам вставить в базу данных уже существующий на вашем жестком диске OLE-объект (рис. 8.8). При этом вы можете установить связь между файлом-оригиналом и добавленным в базу данных объектом, отметив контрольный индикатор Link (Установить связь).

Интернет-журнал "Домашняя лаборатория", 2007 №4 - img_212

Рис. 8.7. Диалоговое окно вставки объекта

Интернет-журнал "Домашняя лаборатория", 2007 №4 - img_213

Рис. 8.8. Вставка объекта из файла

Теперь с помощью нашего приложения вы можете не только просматривать и редактировать OLE-объекты в базе данных, но и добавлять новые, предварительно выбрав его тип. Однако в базах данных хранятся, как правило, объекты одного типа. Для создания объекта требуемого типа можно использовать метод CreateEmbed объекта OLE-контейнер. Метод имеет следующий синтаксис:

object.CreateEmbed sourcedoc, class.

Объектное выражение object определяет имя объекта OLE-контейнера. Первый аргумент — sourcedoc является обязательным и определяет имя файла документа, используемого как шаблон для внедряемого объекта. Если вы не определяете этот файл, то необходимо задать этот аргумент в виде пустой строки Второй аргумент — class не обязателен и определяет класс внедряемого объекта. Этот аргумент игнорируется, если определен параметр sourcedoc.

173
{"b":"870520","o":1}