Здоровеньки булы!!!
Помогите, плз.
Имеется база данных 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.
Только что мне с этим теперь делать???
Заранее спасибо, если конечно кто знает.
Может у кого-то такое было?