АДО

8 отговора 251 прегледа
#1

АДО

Здравейте.
Имам нужда от малко помощ.
За какво става дума...
имам един проект и в ного използвам ADO , какво правя , импортвам си dll-а така:
#import "c:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")

ОК
обаче ще ми се наложи да използвам и адоХ
и аз разбира се отворих един хелп и копирах следното:

#import "c:\Program Files\Common Files\system\ado\msado15.dll"
#import "c:\Program Files\Common Files\system\ado\msadox.dll" no_namespace

Чудесно, обаче компилатора ми дава следното съобщение:

--------------------Configuration: s - Win32 Debug--------------------
Compiling...
StdAfx.cpp
\my_source\s\debug\msado15.tlh(409) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
\my_source\s\debug\msado15.tlh(1317) : error C2629: unexpected 'short ('
\my_source\s\debug\msado15.tlh(1317) : error C2238: unexpected token(s) preceding ';'
\my_source\s\debug\msadox.tlh(1201) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
Error executing cl.exe.

s.exe - 2 error(s), 2 warning(s)

////////////////////////////////////

пробвах различни варианти на no_namespace rename("EOF", "adoEOF") и no_namespace да ги слагам пред един от двата импорта обаче нищо.
Ако някои има идея как да използвам и двата dll-а моля да я сподели с мен.
Предварително благодаря.

Отговор
в отговор на poceн #2

Re: АДО

Не знам за какви грешки ти реве компилатора, но
за предупрежденията единствения начин да се справиш с тях е да забраниш на компилатора да ги показва. Точно преди импорта:
#pragma warning(push)
#pragma warning(disable:4146)
недомислица на microsoft

Отговор
в отговор на poceн #3

Re: АДО

Probvay da importnesh adox-a s

rename_namespace("ADO_X")

i ot tam natatuk vsichko, koeto polzvash ot adox shte si go vikash prez tota namespace, niama da se karat s ADO-to

Prosto idea, dano da pomogne

Enjoy
ukk
Отговор
в отговор на poceн #4

Re: АДО

бих тръгнал по пътя на Укк. импортирането на всяко тлб в отделен неймспейс е страшно добра идея.

грешки като "error C2629: unexpected 'short (' " често идват от недефинирани типове -- отвори генерираните .tlh файлове, в началото има коментар дали трябва да #import-неш някой друг тлб ресурс.

колкото до предложението на г-н Кодер да скриеш warning-а, вместо да проучиш какво го причинява -- мога само да замълча в погнуса.

ein heller Schein am Firmament
Отговор
в отговор на poceн #5

Re: АДО

Пичаги, това го оправих :
////////////////
// works OK
#pragma warning (disable: 4146)
#import "d:\Program Files\Common Files\system\ado\msadox.dll" rename_namespace("ADO_X") rename("EOF", "adoEOF")
#import "d:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
// Използва се за DataLinks диалога за избор на база данни.
#import "d:\program files\common files\system\ole db\oledb32.dll" no_namespace




НОООО,
установих че ми трябва и JetEngine, а тука вече става мноооого интересно:
импортвам си аз msjro.dll , обаче :))))) VC -то казва мнеее, немаастане
////////////////
// works OK
#pragma warning (disable: 4146)
#import "d:\Program Files\Common Files\system\ado\msadox.dll" rename_namespace("ADO_X") rename("EOF", "adoEOF")
#import "d:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
#import "d:\Program Files\Common Files\System\ado\msjro.dll"
// Използва се за DataLinks диалога за избор на база данни.
#import "d:\program files\common files\system\ole db\oledb32.dll" no_namespace

А като гледам кода на VBasic изпадам в истерия , 5 реда код няма импорти няма глупости, но това е дълга темааааа
Направо откачих...
Излиза, че в едно приложение на Microsoft Visual C++ 6.0 е НЕВЪЗМОЖНО да се използват трите части на Microsoft ActiveX Data Objects : ADO, ADOX и JetEngine,
защо ?????????????

Отговор
в отговор на poceн #6

Re: АДО

2 дена изгубих за да импортвам простотиите на Microsoft и за какво ??????????????????????????????????????????????????????????

Отговор
в отговор на poceн #7

Re: АДО

просто за допълнение:
при последното импортване както съм го описал по-горе всичко работи фокато не се опитам да изполвам класа IJetEngine по някакъв начин: VC казва че това е недефиниран тип, как да не се досетиш ??

Отговор
в отговор на poceн #8

Финал

Благодаря ви за мненията.
Накрая открих истината:

////////////////
//
#pragma warning (disable: 4146)
#import "d:\Program Files\Common Files\system\ado\msadox.dll" rename_namespace("ADO_X") rename("EOF", "adoEOF")
#import "d:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
#import "D:\\Program Files\\Common Files\\System\\ado\\msjro.dll" no_namespace
// Използва се за DataLinks диалога за избор на база данни.
#import "d:\program files\common files\system\ole db\oledb32.dll"
...
rename_namespace("dl20")


Това е интерфейса на JetEngine:
IJetEnginePtr jet(__uuidof(JetEngine));

Отговор
в отговор на poceн #9

Финал

#pragma warning (disable: 4146)
#import "d:\Program Files\Common Files\system\ado\msadox.dll" rename_namespace("ADO_X") rename("EOF", "adoEOF")
#import "d:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
#import "D:\\Program Files\\Common Files\\System\\ado\\msjro.dll" no_namespace
// Използва се за DataLinks диалога за избор на база данни.
#import "d:\program files\common files\system\ole db\oledb32.dll" rename_namespace("dl20")

Отговор