Ошибка: Failed to parse the Currency Converter XML document.
$11 411.81


Ошибка: Failed to parse the Currency Converter XML document.
$3 552.61


Ошибка: Failed to parse the Currency Converter XML document.
$1 939.28


Работа с ADO в Microsoft Excel

Достаточно часто требуется сформировать отчет и вывести его не только на печать, но и выгрузить в Excel. Последнего можно добиться 2 способами, либо получить данные средствами языка Navision C/Al и затем выгрузить их в Excel, подключив его как ActiveX-компонент, или в csv-файл. Либо непосредственно из Microsoft Excel выполнить запрос к базе данных Navision. У последнего способа то преимущество, что при этом можно использовать возможности Excel для расчета данных и формирования отчета.

    Достаточно часто требуется сформировать отчет и вывести его не только на печать, но и выгрузить в Excel. Последнего можно добиться 2 способами, либо  получить данные средствами языка Navision C/Al и затем выгрузить их в Excel, подключив его как ActiveX-компонент, или в csv-файл. Либо непосредственно из Microsoft Excel выполнить запрос к базе данных Navision. У последнего способа то преимущество, что при этом можно использовать возможности Excel для расчета данных и формирования отчета.


В этой статье рассмотрены основные принципы ADO — AxctiveX Data Objects, и приведен пример выборки данных из SQL Server в Excel.

Объектная модель ADO.

В ADO для работы с данными существуют три типа объектов:


Connection — для подключений к базе данных.

Command — для выцполнения запросов к базе данных, не возвращающих результатов (создание таблиц — СREATE TABLE, операции вставки — INSERT, обновления — UPDATE, удаления данных — DELETE и т.д.)
RecordSet — набор данных. Он позволяет получать данные из базы данных и обновлять их.

Первое, что мы должны сделать это подключить Microsoft Data Objects Library 2.6 (для офисовского Microsoft Visual Basic — Tools->References). Следующим шагом является создание объекта Connection:

«Объект Connection
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
»Строка подключения
connString = «Provider=SQLOLEDB;Data Source=(local);» + _
«Initial Catalog=myDatabase;user id=userName;password=passwd»
conn.Open connString

Самое интересное здесь это строка подключения. В данной случае указан провайдер SQLOLEDB, который используется для создания подключений к СУБД MS SQL Server. Параметр Data Source используется для указания конкретного SQL Server«a, в примере используется локальный SQL Server. Initial Catalog — база данных SQL Server (для Attain — база данных Attain, расположенная на SQL Server). Остальные параметры, я думаю, не нуждаются в объяснении.

Кроме SQL Server можно подключаться и к другим источникам данных, скажем пример строки подключения для MS Access:

connString = «Provider= Microsoft.Jet.OLEDB.4.0;Data Source= E:\AccessBases\base1.mdb»;

Либо, если стоит пароль на базе данных Access:

string connString = «Provider= Microsoft.Jet.OLEDB.4.0;Data Source= E:\AccessBases\base1.mdb;JetOLEDB:Database Password=passwd»;

Параметры подключения к MS AccessProvider    Поставщик OLEDB. Для MS Access: Microsoft.Jet.OLEDB.4.0
Data Source    Путь к базе данных
Jet OLEDB:Database Password    Пароль

Аналогично можно подключаться и к базе данных формата dBase:

connString = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\apr\;Extended Properties=dBase IV;mode=Read|Write|Share Deny None»

В данном примере предпологается, что база данных — это набор файлов в папке D:\APR\. Название файла — это, по сути, название таблицы. Параметром Extended Properties указывается стандарт базы данных, список всех возможных значений этого параметра можно посмотреть в реестре:

[HKEY_LOCAL_MACHINE\Software\Microsoft\Jet.0\ISAM Formats]

Следующим мы рассмотрим объект Command.

С его помощью можно выполнять запросы к базе данных, не возвращающие записей. Самым важным его свойством является, пожалуй ActiveConnection. Это свойство используется для указания подключения к базе данных, которое будет использоваться для выполнения запроса. И, собственно для выполнеия запроса, используется метод Execute, который в качестве параметра принимает строку запроса, написанного на языке SQL.

Приведем пример вставки данных в таблицу Attain (в данном случае — это физический файл D:\APR\Attain.dbf)

»Объект Connection
Dim conn As ADODB.ConnectionSet conn = New ADODB.Connection
«Объект Command
Dim comm As ADODB.CommandSet comm = New ADODB.Command
»Строка подключения
connString = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\apr\;» + _Extended Properties=dBase IV;mode=Read|Write|Share Deny None««Открытие подключения
conn.Open connString
»Указания активного подключения
comm.ActiveConnection = conn
«Строка запроса на SQL
CommandText = »insert into Attain (ID, DESCRIPT) values(4, «четыре»)«
»Выполнение команды
conn.Execute CommandText
«Закрытие подключения
conn.Close
Ну и самый самый важный объект — RecordSet. Он позволяет производить любые операции с данными. Алгоритм работы с ним следующий:

Создание объекта Connection
С помощью свойства ActiveConnection указывается активное подключение к базе данных (как у Command)
Открытие объекта RecordSet. Метод Open принимает в качестве параметра строку запроса на SQL.

Для перемещения по выбранным записям существуют методы: MoveNext, MovePrevious, MoveFirst, MoveLast, Move
С помощью скобок и указанного в них порядкового номера поля можно обращаться к конкретному полю текущей записи, например records(0) — позволяет обратиться к первому полю текущей записи.

Свойства EOF и BOF принимают значение true в случае, если достигнут либо конец, либо начало таблицы соответственно
Для обновления данных предназначен метод Update
Для вставки — AddNew
Для удаления — Delete
Закрываем RecordSet — метод Close
Для работы с базой данных Attain методы Update, AddNew и Delete, как правило не нужны, лучше и безопасней использовать встроенные средства языка C/Al обновления данных — метод Validate для вставки и т.д. А вот использовать их для операций выборки данных  сам Бог велел — намного быстрее (в десятки-сотни раз). Но и тут не следует забывать, что при этом создается новое подключение к базе данных (вопрос лицензирования количества активных сессий), но зато ненадолго. Думаю, всегда есть несколько свободных подключений, и использовать одно из них на несколько секунд-минут не так уж и страшно.

Хочется еще напомнить как отображаются названия таблиц Navision Attain на сиквельные таблицы. Точки при этом заменяются на подчеркивания, и спереди через знак $ добавляется наименование фирмы. К примеру у нас есть таблица »Gen. Journal Line« и фирма CRONUS Россия Extended. В SQL Server эта таблица будет выглядеть как [CRONUS Россия Extended$Gen_ Journal Line].

Ну и пример выборки данных:

»База данных
Db = »devel«
«Имя пользователя
user = »sa«
»Пароль
Password = »password«
«Объект Connection
Dim conn As ADODB.ConnectionSet conn = New ADODB.Connection
»Строка подключения
connString = »Provider=SQLOLEDB;Data Source=(local);Initial Catalog=« + _ Db + »;user id=« + user + »;password=« + Passwordconn.Open connString
«набор строк
Dim records As ADODB.RecordsetSet records = New ADODB.Recordset records.ActiveConnection = connsqlString = »select top 10 No_, [Name] from [CRONUS Россия Extended$Customer]"records.Open sqlString»Просмотр строк в цикле и вывод в книгу Excel
i = 1While Not records.EOF Sheet1.Cells(i, 1) = records(0) Sheet1.Cells(i, 2) = records(1) records.MoveNext i = i + 1Wend records.Closeconn.Close

 

Интересное

Безопасность в Windows XP
1. Стратегия безопасности Windows XP Модель безопасности Windows XP Professional основана на понятиях аутентификации и авторизации. При аутентификации проверяются идентификационные данные...
Подробнее...
Внимание! На свободе...
Вредоносный документ PDF, использующий баги в программном обеспечении Adobe Systems Reader и Acrobat, выпущен на волю, сообщила компания Symantec во вторник — спустя всего несколько часов после...
Подробнее...
10 полезных возможностей...
В состав операционной системы Windows Vista вошло антишпионское приложение «Защитник Windows» (Windows Defender), предназначенное для защиты от вредоносного ПО и сбора информации о пользователях и...
Подробнее...
Обзор ОС Windows Server...
Windows Server 2003 Web Edition, разработанная для построения и хостинга веб-приложений, веб-страниц и веб-служб XML, специально предназначена для поставщиков услуг интернета (ISP), разработчиков...
Подробнее...
Оптимизация vs. здравый смысл
В этой статье я хотел бы обратиться к начинающим seo-специалистам и Интернет-маркетологам с просьбой... Занимайтесь своим делом осмысленно, рационально, используя научный подход и учитывая ошибки...
Подробнее...
Масштабируемые и...
Обсуждаемые темы: HTTP-запросы; HTTP-ответы; Оптимизация с помощью HTTP keep-alive; Оптимизация с помощью HTTP-pipelining; Оптимизация с помощью HTTP-кэширования: Кэширование в современных...
Подробнее...
Вычисление IP адресов...
Все мы когда-то начинали программирование в сети с простой операции определения IP адреса, принадлежащему нашему компьютеру. Задав такой вопрос в форуме, мы обычно получали очень короткий ответ:...
Подробнее...
Хакеры тоже заимствуют...
Хакерам по душе многие принципы сообщества open source. Они охотно делятся кодом, заимствуют готовые решения, используют чужие модули. Если бы в сообществе вирусописателей не доминировали идеи...
Подробнее...
Корпоративный интернет-счётчик
В данной статье рассказывается как создать интернет-счётчик для корпоративного порталаСчётчик должен вести подробную информацию о посетителях: адрес откуда пришёл посетитель, адрес страницы,...
Подробнее...
Сомневаетесь в Windows...
Windows Vista в виртуальной машинеВ последнее время внимание всего околокомпьютерного сообщества было приковано к готовящемуся окончательному релизу операционной системы Windows Vista. И вот,...
Подробнее...