глюк в ADOMD коллекции
От: damien  
Дата: 13.04.03 23:23
Оценка:
RAD — VC++6.0
OS — Win2k server
MDAC самый последний
Проблема состоит в следующем — есть коллекция (CubeDefs из ADOMD (msadomd).dll)
Свойство count возвращает например 3. Тогда при попытке GetItem(_variant_t(i)) генерится исключение —
"Item cannot be found in the collection corresponding to the requested name
or ordinal", хотя i лежит в пределах 0..2 .При доступе к объектам по именам проблем нет. На VB все работает ...
Вот код —

#import "c:\winnt\system32\dllcache\msado15.dll" no_namespace rename("EOF", "EndOfFile")
#import "c:\winnt\system32\dllcache\msadomd.dll" no_namespace rename("EOF", "EndOfFile")
------------------------
------------------------
ICatalogPtr catalog;
MD_CollectionPtr md_collection;
_ConnectionPtr connection;
CubeDefsPtr cube_defs;
CubeDefPtr cube_def;
HRESULT hr=0;
int icount=0;

catalog.CreateInstance( __uuidof( Catalog ) );
connection.CreateInstance( __uuidof( Connection ) );
cube_defs.CreateInstance( __uuidof( CubeDefs ) );
cube_def.CreateInstance( __uuidof( CubeDef ) );

try
{
connection->Open("PROVIDER=MSOLAP; DATA SOURCE=LOCALHOST","","",-1);
connection->put_DefaultDatabase(_bstr_t("FoodMart 2000"));

catalog->putref_ActiveConnection(connection.GetInterfacePtr());
catalog->get_CubeDefs(&cube_defs);
icount=cube_defs->Count;
for(int i=0; i<icount; i++)
{
cube_def=cube_defs->GetItem(_variant_t(i)); // генерится исключение! Почему ??!
// cube_def=cube_defs->GetItem(_variant_t("Sales")); // все работает
}
}
Я в шоке, даже и не представляю в чем проблема, ведь аналогичный код на VB работает !
Помогите пожалуйста !!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.