русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Листинг 21.1. Процедура ИмпортДанных


Дата добавления: 2015-07-23; просмотров: 525; Нарушение авторских прав


l:Sub ИмпортДанных()

2: Dim rsProducts As ADODB.Recordset

3: Set rsProducts = New ADODB.Recordset

4: rsProducts.Open Source:="Товары", _

5: activeconnection:="Provider=Microsoft.Jet.OLEDB.4.0; _

6: Data Source=C:\Program Files\Microsoft _

7: Office\Office\Samples\Борей.mdb", _

8: CursorType:=adOpenStatic, _

9: LockType:=adLockOptimistic, _

10: Options:=adCmdTable

11: With Worksheets("Лист1")

12: .Range("A1").CurrentRegion.Clear

13: Application.Intersect(.Range(.Rows(l), _

.Rows(rsProducts.RecordCount)),

.Range(.Columns(1), .Columns(rsProducts.Fields.Count))). _

Value = Поворот(rsProducts.GetRows _

(rsProducts.RecordCount))

14: End With

15: rsProducts.Close

16:End Sub

В начале своего выполнения процедура работает с объектом Recordset. Обратите внимание на метол Open (Открыть) этого объекта. Аргумент Source (Источник) метода Open задает имя таблицы в базе данных (в данном случае процедура будет работать с таблицей Товары). Аргумент activeconnection (активное соединение) содержит всю информацию, необходимую для соединения с базой данных:

Dim rsProducts As ADODB.Recordset

Set rsProducts = New ADODB.Recordset

rsProducts.Open Source:="Товары", _

activeconnection:="Provider=Microsoft.Jet.OLEDB.4.0; _

Data Source=C:\Program Files\Microsoft _

Office\Office\Samlples\Борей.mdb", _

CursorType:=adOpenStatic, _

LockType:=adLockOptimistic, _

Options:=adCmdTable

После установления соединения с базой данных, все готово для импортирования ее, данных в рабочую книгу. Но здесь вас подстерегает небольшая проблема. Массив данных, извлекаемый из базы данных с помощью ADO, организован в виде двумерной таблицы, где каждый столбец соответствует одной записи данных, а строка соответствует полю, т.е. данные представлены совсем не в том виде, к какому мы привыкли.



Поэтому, прежде чем помешать данные в рабочий лист, весь массив данных надо транспонировать (повернуть) так, чтобы столбцы стали строками, а строки - столбцами. Если вы опытный пользователь Excel, то можете предположить, что для этого можно воспользоваться функцией Excel ТРАНСП (транспонирование). Но дело осложняется тем, что массивы импортируемых данных, как правило, очень велики и функция ТРАНСП с ними не всегда справляется. Поэтому надо создать собственную функцию транспонирования (код такой функции с названием Поворот приведен ниже в листинге 21.2). В процедуре ИмпортДанных в строках кода

With Worksheets("Лист1")

.Range("A1").CurrentRegion.Clear

Application.Intersect(.Range(.Rows(1), _

.Rows(rsProducts.RecordCount)), _

.Range(.Columns(1), .Columns(rsProducts.Fields.Count))). _

Value = Поворот(rsProducts.GetRows _

(rsProducts.RecordCount))

End With

сначала очищается текущая активная область рабочего листа, начиная с ячейки А1, а затем используется метод Intersect (Пересечь) В сочетании с функцией транспонирования Поворот. Метод Intersect возвращает объект Range (Диапазон), состоящий из прямоугольной области пересечения двух и более диапазонов ячеек. В данном случае создается пересечение диапазона импортируемых данных и ячеек всего рабочего листа.

Последний оператор rsProducts.Close закрывает соединение с базой данных.

Теперь приведем код функции транспонирования Поворот.



<== предыдущая лекция | следующая лекция ==>
Вопросы и ответы | Листинг 21.2. Функция Поворот


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.383 сек.