Подключение приложения C++ Builder к базе данных Excel через ADO

Подключение приложения C++ Builder к базе данных Excel через ADO.

  Пример подключения приложения C++ Builder к базе данных Excel через ADO используя OLE интерфейсы:
#include "utilcls.h" 
#include "sysvari.h"
#include "ComObj.hpp"

AnsiString sql = "SELECT [справочник отделений$].* From [справочник отделений$] ";
Variant cnn = CreateOleObject("ADODB.Connection");
Variant rst = CreateOleObject("ADODB.Recordset");
cnn.OlePropertySet("Provider","MSDASQL.1");
cnn.OlePropertySet("Open","Driver={Microsoft Excel Driver (*.xls)};
DBQ=D:\\ADO\\справочники.xls; ReadOnly=False;");
rst.OleProcedure("Open" ,sql.c_str(), cnn, 1, 3, 1);
Variant Fields = rst.OlePropertyGet("Fields","Otd");
ListBox1->Clear();

while(rst.OlePropertyGet("EOF")== 0)
{
ListBox1->Items->Add(Fields.OlePropertyGet("OriginalValue"));
}
rst.OleProcedure("MoveNext");
if(rst.OlePropertyGet("EOF")== 1) break;
}
  Формирование SQL запросов в книге Excell:
Строка AnsiString sql = "SELECT [справочник отделений$].* From [справочник отделений$] "; формирует запрос к данным, находящимся на листе «справочник отделений».
Вы меня спросите: «Как же они формируются ?»
На что я вам отвечу: «Очень просто!»
  Чтобы определить в запросе рабочий лист как таблицу базы данных, используйте имя рабочего листа, сопровождаемое знаком «$», окруженных квадратными скобками или символом кавычки` (под тильдой) . Например:
strSQL = "SELECT * FROM [справочник отделений $]"
или
strSQL = "SELECT * FROM ` справочник отделений $`"
Можно также определить именованный диапазон ячеек базой данных, для этого следует использовать имя диапазона в запросе. Например:
strQuery = "SELECT * FROM MyRange" 
Чтобы определить неименованный диапазон ячеек базой данных, добавьте после знака $ стандартную систему обозначения диапазона Excel.
Например:
strQuery = "SELECT * FROM [справочник отделений $A1:B16]" 
  Все ячейки с данными, не входящие в диапазон, а также пустые строки в самом диапазоне не будут входить в базу данных. Предостережение определения рабочих листов: Поставщик данных (провайдер) по-умолчанию считает, что таблица данных начинается с верхней, крайней левой непустой ячейки, на выбранном рабочем листе. Другими словами, ваша таблица данных может начаться с ячеек С3 или D5, однако нельзя, например, напечатать worksheet заголовок выше и левее от данных в ячейке A1, то бишь данные не должны начинаться с ячейки А1, т.к. верхняя ячейка в заданном диапазоне содержит имя таблицы. См. Рис. 1.


Рис.1.



Рис.2.

  На рисунке 2.показано, что данные не должны начинаться с ячейки А1. В приведённом примере Провайдер определит БД как таблицу из 2-х полей с названиями: «01» и «Биохимическая лаборатория». Вобщем, если диапазон не определён, то имена полей таблиц хранит первая непустая верхняя строка, ну а если определён, то самая верхняя.

Информация о статье "Подключение приложения C++ Builder к базе данных Excel через ADO"

Автор Koss | Сайт http://devoid.com.ua | Добавлена 15 Сентября 2007 | Просмотрели 9052 раз

  • Digg it!
  • Delicious
  • +МоёМесто.ru
  • Добавить страницу к Мистеру Вонгу
  • Добавить страницу к Мистеру Вонгу

Комментарии КОММЕНТАРИИ (3)

 6 Мая 2010 19:29:48 |  # 

Уважаємий програмист можете

 6 Мая 2010 19:30:25 |  # 

Залить пример очень надо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 6 Мая 2010 19:42:26 |  # 

Пожалуста примерчик!!!!!!!!!!!!

Зарегистрируйтесь или выполните Вход для того чтобы оставлять комментарии