Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADOX таблица, помогите 
:(
    Опции темы
_hunter
  Дата 23.5.2004, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



в этой статье прочитал как создавать .mdb базы и добавлять в них таблицы

примерно так:
(Delphi)
Код
const
  BaseName =   'c:\data\demo.mdb';
  DS          =   'Provider=Microsoft.Jet.OLEDB.4.0;Data    Source='+BaseName;
  var
  Catalog   : TADOXCatalog;
  ...
  // Создать экземпляр объекта ADOX Catalog
  Catalog   := CoCatalog.Create;
  // Если база данных существует, удалим ее
  If FileExists(BaseName) Then DeleteFile(BaseName);
  // Создадим новый MDB-файл
  Catalog.Create(DS);
  // Укажем активное соединение
  [b]Catalog._Set_ActiveConnection(DS);[/b]

  // Создать новый экземпляр объекта Table
  Table := CoTable.Create;
  // Give it the name
  Table.Name      := 'Customers';
  // И определить Catalog, к которому он принадлежит
  Table.ParentCatalog := Catalog;
  // Добавить объект Table в коллекцию Tables объекта Catalog
  [b]Catalog.Tables.Append(Table);[/b]


я пытаюсь сделать так:
(Builder)
Код

   ::CoInitialize(NULL);
   TCatalog * catalog =  new TCatalog(Application);
   WideString db = (WideString)"Provider=Microsoft.Jet.OLEDB.4.0;"+
       "Data Source=" + GetCurrentDir() + "\\"+ baseName;
       "Mode=ReadWrite;";

   if ( FileExists(GetCurrentDir() + "\\"+ baseName) )
       DeleteFile(GetCurrentDir() + "\\"+ baseName);

   catalog->Create(db.c_bstr());
     [b]catalog->_set_ActiveConnection(db);[/b]

   TAdoXTable * table = new TAdoXTable(catalog);
     table->set_Name(((WideString)"DISCS").c_bstr());
     table->set_ParentCatalog(catalog->GetDefaultInterface());
     [b]catalog->Tables->Append(table);[/b]


то, что выделенно в Delphi проходит ( судя по статье ), а в Builder' e -- нет sad.gif
в первом случае пишет:
Cannot convert 'WideString' to 'IDispatch *'
а во втором:
Cannot convert 'TAdoXTable *' to 'tagVARIANT'

как это побороть?

Заранее благодарю за ответ.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Олег М
Дата 11.6.2004, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Параметром метода ADOX::Catalog::ActiveConnection служат либо указатель на объект ADO::Connection, либо VARIANT. Вот декларация метода:
Код

void ActiveConnection([in] VARIANT rhs);
       [id(0x00000001), propputref, helpcontext(0x0022828a)]
void ActiveConnection([in] IDispatch* rhs);
       [id(0x00000002), propget, helpcontext(0x002282a5)]

В дельфи строковый тип, очевидно, автоматически приводится к типу VARIANT. В С++ такого нет, поэтому надо создавать переменную типа VARIANT и инициализировать её строкой.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0413 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.