Наконец то добрался до написания проги для работы с Pocket Access-ой БД...
Постокльку разрабатываю на eVC++ не могу так вот запросто работать с ADOCE 3.0 как в еVB
Пытаюсь работать с ней как с COM объектом, но что-то ничего не выходит...
Реганул десктопную библу и тут получил проблему...
1) директива #import работать не хочет, через OLE/COM Object Viewer выяснил GUID и по нему пытался симпортировать... невышло. Пишет не мргу открыть такую-то библиотеку.
2) нужно ли импотировать ещё что-то для работы с этой билиотекой.
Есть ли альтернативный вариант работы с этой БД?
Может всё проше и не надо мучить COM? Тем более что перспектива рабрты через диспинтерфейс на eVC меня не устраивает...
В силу обстоятельств юзаю eVC++ 3.0 с PocketPC2002 SDK.
Зарание благодарен за ответ.
Здравствуйте, Kernan, Вы писали:
Уйййя, Мама, не горюй

Какой вижуал бейсик, какой disp-интерфейс? Это же С++! Импортируйте либу от девайса, а не десктопную!
Вот вам наш вариант:
#pragma once
#ifdef UNDER_CE
//: ADO for CE version 3.1:
#import "ADOCE\adoce31.dll" raw_interfaces_only rename ("index", "Index")
using namespace ADOCE;
#import "ADOCE\adoxce31.dll" raw_interfaces_only \
exclude("_Collection") \
exclude("_DynaCollection") \
exclude("DataTypeEnum") \
exclude("Properties") \
exclude("User") \
exclude("Key") \
exclude("Group") \
exclude("Property")
using namespace ADOXCE;
#define adAffectCurrent 1
//#include "ADOCE31.h"
//#include "ADOXCE31.h"
//#define adAffectCurrent 1
#else
//: ADO for PC version 2.1:
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" raw_interfaces_only
using namespace ADODB;
#import "C:\Program Files\Common Files\System\ADO\msadox.dll" raw_interfaces_only \
exclude("_Collection") \
exclude("_DynaCollection") \
exclude("DataTypeEnum") \
exclude("Properties") \
exclude("User") \
exclude("Key") \
exclude("Group") \
exclude("Property")
using namespace ADOX;
#endif
Дальше так:
_ConnectionPtr m_AdoConn; //* owned
...
HRESULT hr = m_AdoConn.CreateInstance(__uuidof(Connection));
...
_RecordsetPtr m_AdoRS;
...
HRESULT hr = m_AdoRS.CreateInstance(__uuidof(Recordset));
K>Есть ли альтернативный вариант работы с этой БД?
OLEDB? ADOCE вроде как объявлен трупом, правда есть подозрение, что MS все же скомпилирует его для WCE 5.0, уж очень многие его используют "противозаконно".
K>Может всё проше и не надо мучить COM? Тем более что перспектива рабрты через диспинтерфейс на eVC меня не устраивает...
Что ж вам всем так этот диспинтерфейс дался, да он по-моему вообще глючит с EVC.
Здравствуйте, Xentrax, Вы писали:
>Импортируйте либу от девайса, а не десктопную!
Во! Этого я и не знал!
За код спасибо!
Особенно за
#import "ADOCE\adoce31.dll" raw_interfaces_only rename ("index", "Index")
Я ж по libid импорт делал
..поэтому за диспинтерфйсы и взялся.
Тут нашёл MFC обертку для OLEAutomation и уже приготовился её юзать...
Но Бог миловал : )
Кстати, можно ли как-то через libid или progid имортировать, чтоб на обсолютных путях не сидеть?
Если не жалко, поделитесь, пожалуйста библиотекой adoce31.dll Пыталась скачать, надули
Здравствуйте, Lelya, Вы писали:
L>Если не жалко, поделитесь, пожалуйста библиотекой adoce31.dll Пыталась скачать, надули
Вот, думаю тут эти библиотеки есть:
http://www.microsoft.com/downloads/details.aspx?FamilyID=929bb147-281c-4d6e-a727-67271075fadb&DisplayLang=en