Почему глючит TopSpeed
От: wasilij  
Дата: 23.01.03 10:11
Оценка:
Здоровеньки булы!!!
Помогите, плз.

Имеется база данных Clarion. Файлы в формате (*.tps).
Я их читаю MFC-ыми классами так:

    CString strConnect;
    CString strDoc;
    strDoc = _T("C:\\File.TPS");
    strConnect.Format(_T("ODBC;DRIVER={TopSpeed ODBC Driver (Read-Only)};DSN='';DBQ=%s"), strDoc);    
    CString strSelect = _T("SELECT ID_N, NAME FROM []");
    TRY
    {
        CDatabase db;
        db.Open(NULL, FALSE, TRUE, strConnect);/*На этой строчке все и случается!*/
        if(db.IsOpen())
        {
            CRecordset rs(&db);
            rs.Open(CRecordset::forwardOnly, strSelect, CRecordset::readOnly);
            if(rs.IsOpen())
            {
                long nRecord = 0;
                while( ! rs.IsEOF() )
                {
                    CDBVariant var;
                    rs.GetFieldValue(_T("ID_N"), var);
                    ASSERT(var.m_dwType == DBVT_LONG);
                    long lValTmp = var.m_lVal;
                    var.Clear();
/*здесь читаю нужную информацию*/
                    rs.MoveNext();
                }
                rs.Close();
            }
        }
        db.Close();
        bSuccess = true;
    }
    CATCH(CDBException, e)
    {
        CString str;
        str.Format(_T("Error number: %d\n\n\nError description:\n%s\n\nMessage from ODBC:\n%s\n"),
            e->m_nRetCode, e->m_strError, e->m_strStateNativeOrigin);
        MessageBox(NULL, str, _T("Database error!"), MB_SETFOREGROUND);
    }
    END_CATCH;


Проблема вот в чем:
— на некоторых компах все прекрасно работает.
— а на некоторых в выделенной строчке выводиться страшное сообщение:


"Runtime error"
Internal error 01: Assertion failed: FALSE
File wslrepor.cpp line 3858
"Ok"   "Cancel"


При нажатии на "Ok" прога вываливается.
При нажатии на "Cancel" выводиться диагностическое сообщение из блока CATCH():


"Database error!"
Error number: -1

Error description:
Specified driver could not be loaded due to system error 998(TopSpeed ODBC Driver (Read-Only)).

Message from ODBC:
State:IM003,Native:160,Origin:

"Ok"


Файла wslrepor.cpp я у себя на компе не нашел
код ошибки GetLastError() == 998 == ERROR_NOACCESS -> Invalid access to memory location.
Только что мне с этим теперь делать???
Заранее спасибо, если конечно кто знает.
Может у кого-то такое было?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.