Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA For Excel Часть 02.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.08 Mб
Скачать

Непосредственная загрузка таблицы базы данных в Excel таблицу

Для непосредственной загрузки таблицы базы данных используют метод объекта CellsCopyFromRecordset, который имеет следующий формат вызова:

CopyFromRecordset Data [, MaxRows] [, MaxColumns]

Dataимя переменной типа Recordset, которая является указателем на таблицу базы данных, и с которой делают копию в лист Excel. (Как создать указатель на таблицу базы данных, было рассказано нами в предыдущем параграфе данной главы.)

MaxRowsномер последней записи для копирования в лист Excel, если этот параметр опущен, то копируются все записи таблицы базы данных.

MaxColumnsномер последнего поля для копирования в лист Excel, если этот параметр опущен, то копируются все поля таблицы базы данных.

В примерах приведенных ниже загружают таблицу базы данных в активный лист Excel. Т.к. в этих примерах не указаны родители объекта Cells. Естественно, что их можно указать через соответствующие объекты. Переменные i и j определяют строку и столбец ячейки, с которой начнется загрузка таблицы базы данных. Имя объекта Workspaces(0) в указанных примерах можно опустить.

Объявляем переменную для ссылки на базу данных

Dim db As Database

Объявляем переменную для ссылки на таблицу базы данных

Dim r As Recordset

Set db = Workspaces(0).OpenDatabase("Полный путь к базе и ее имя")

Set r = db.OpenRecordset("Имя загружаемой таблицы")

Cells(i, j).CopyFromRecordset r

r.Close

db.Close

можно загрузить данные в Excel таблицу и на прямую без указателей

Cells(i, j).CopyFromRecordset _

Workspaces(0). ("Полный путь к базе и ее имя").OpenRecordset( _

"Имя загружаемой таблицы")

В данных примерах в лист Excel загружается только записи таблицы базы данных. Иногда пользователю необходимо загрузит в лист и имена полей таблицы базы данных. Для этого надо воспользоваться свойствами объекта Fields, о которых мы рассказали в предыдущем параграфе данной главы.

Пример загрузки таблицы базы данных с именами полей:

Dim j As Long

'Объявляем переменную для ссылки на базу данных

Dim db As Database

'Объявляем переменную для ссылки на таблицу базы данных

Dim r As Recordset

Set db = OpenDatabase("c:\Мои документы\R.mdb")

Set r = db.OpenRecordset("Таблица1")

загружаем записи таблицы базы данных в активный лист

Excel начиная со 2 строки

Cells( 2, 1).CopyFromRecordset r

выводим имена полей базы данных в первую строку активного листа Excel

For j = 0 To r.Fields.Count - 1

Cells( 1, j + 1).Value = r.Fields( j ).Name

Next j

r.Close

db.Close

Форма для интерактивной работы с записью таблицы базы данных

Существует множество элементов управления VBA, которые позволяют подключиться к таблице базы данных непосредственно через установку значения их свойств. Например, объект, Adodc для непосредственного подключения к базе данных, DBGrid – для просмотра таблицы базы данных и ее редактирования. К сожалению, эти элементы управления не всегда поставляются вместе с Excel и работают нестабильно в различных версиях Excel. В нашем примере используются самые распространенные элементы управления для просмотра таблицы базы данных. Указанной нами формой возможно просматривать числовые, строковые, Memo и логические поля таблицы базы данных. (для просмотра поля Memo необходимо установить многострочный режим объекта TextBox ). Так же возможно использования полей Data. Значение даты вводится в поле следующим образом: Число.НомерМесяца.Год . Для ввода логического поля мы применили объект выключатель. В качестве навигатора по записям таблицы базы данных используется объект полосы прокрутки. Для того, что бы наша форма работала, необходимо только подключить библиотеку Microsoft DAO 3.5 object library. Вы можете экспортировать модуль формы во внешний файл, для последующего его импорта в другой проект. В другом проекте будет очень просто переделать нашу форму под загрузку другой таблицы базы данных. Для испытания формы вам нужно будет иметь базу данных созданную в приложении Access, которая будет содержать в себе, по крайней мере, одну таблицу. В примере указанно как подключать поля таблицы различного типа. Учтите, что поля в таблице начинают нумероваться с 0 индекса. Не запускайте нашу форму в том случаи, если с базой данных которую она загружает, работает Access. Программа нашей формы составлена так, что исключается ошибка ввода формата данных в полях. Если введен не правильный формат данных, то поле таблицы базы данных не получает нового значения или получает нулевое или пустое значение. На рисунке ниже показана наша форма.

Рис 27 Вид формы для интерактивной работы

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