Тема: SQl (Asi - классы) и ObjectARX

Здравствуйте,
есть ли где нибудь примеры ( к сожалению в стандартной поставке arxlabs/docsamps/samples таких нет ) как присоединиться к внешней БД через CAsiAppl, CAsiSession и т.д.
При стандартном использовании CAsiAppl, CAsiSession - создание статических/динамических экземпляров в текстсе программы:
CAsiAppl sqlappl ;
CAsiSession sqlsession ( & sqlapp ) ;
и подключении соответствующих библиотек - компиляция программы и ее сборка проходят успешно, а на этапе загрузки возникает ошибка: arxDynamicLinker: "ERROR cannot find a dll or other file". При отладке приложения эта ошибка вываливает еще до того как процесс зайдет в первую строку arxEntryPoint. Как только я убираю объявления Asi-классов, отладка выполняется как положено, видно как отрабатывает вся arxEntryPoint полностью, приложение загружается нормально, без ошибки. MFC не используется.
Заранее спасибо, Алексеев С.

Re: SQl (Asi - классы) и ObjectARX

> alexeew
asiapi15.lib надо цеплять
может на что натолкнет

bool mclaInitAsiConnectDb(CAsiAppl *&pAsiAppl, CAsiSession *&session)
{
    LPSTR chPath = (char*)acad_malloc(1024);
    mclaGetPathDataLinks(chPath);
    int len_Path = strlen(chPath);
    
    for (int j=0;j<len_Path;j++){
        if (chPath[j] == '\\') chPath[j] = '/';
    }
    strcat(chPath, UDLNAME);
    char pathUdlResult[1024];    
    if (RTNORM != acedFindFile(chPath, pathUdlResult)) {
        acutPrintf("\nError: file %s does not exist", chPath);
        acad_free(chPath);
        return false;
    }        
    acad_free(chPath);
    try
    {
        pAsiAppl = new CAsiAppl();
        if (kAsiTrue != pAsiAppl->Init()) throw 1;
        session = new CAsiSession(pAsiAppl);
        if (!session) throw 2;
        // connect whith source of data
        if (kAsiTrue != session->Connect(CAsiUcStr(pathUdlResult),\
            CAsiUcStr(""), CAsiUcStr(""), kAsiTrue)) throw 3;
    }
    catch (int typeError)
    {
        switch (typeError) {
        case 1:
            acutPrintf(__GSW_ASI_ERR_CANTINITASI);
            break;
        case 2:
            acutPrintf(__GSW_ASI_ERR_CANTCRTSESSION);
            break;
        case 3:
            acutPrintf(__GSW_ASI_ERR_CANTCONNECT);
            pAsiAppl->Term();
        }
        
        return false;
    }
    catch (...)
    {
        acutPrintf(__GSW_ASI_ERR_UNKNOWNERRTYPE);
        return false;
    }
        
    return true;
}

Re: SQl (Asi - классы) и ObjectARX

ОГРОМНОЕ СПАСИБо за пример, кода, это как соломинка утопающему, Большое спасибо еще раз, Алексеев

Re: SQl (Asi - классы) и ObjectARX

> alexeew
Рад что смог помочь, но хотелось бы обратить внимание на не совсем утешительную информацию

... The AutoCAD SQL Technology (AST) programming interface has been superceded by the AutoCAD 2000 Database Connectivity feature. The AutoCAD SQL Interface (ASI) and AutoCAD SQL Environment (ASE) components are still provided and have been updated to work with AutoCAD 2000, but they are being deprecated and will be removed in a future release. It is recommended that you migrate your application to use the Database Connectivity feature.

Re: SQl (Asi - классы) и ObjectARX

Да, информация такая, что наверное придется круто менять политику. Разрешите еще попутный вопрос, существуют ли какие-либо альтернативные средства для работы с БД для Автокада, отличные от инструментов MFC - очень не хочется связываться с этой библиотекой только для соединения с базами данных???
Большое спасибо, с уважением, Алексеев С.

Re: SQl (Asi - классы) и ObjectARX

> alexeew
Autodesk рекомендует ADO.

Re: SQl (Asi - классы) и ObjectARX

Большое спасибо! Но можно еще вопрос??? Если я в своем приложении не использую ни ClassWizard ни ресурсов можно ли в него встроить ActiveX компонент или придется этот компонент получать через идентификатор класса, идентификатор интерфейса и т.д.
Большое спасибо, прошу прощения за настырность, Алексеев