|
Таблица ACCESS и ADO
#35658691
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
|
|
|
MFC, Microsoft Visual Studio 2008.
На нижеидущей строке
1. 2.
pCommand->CommandText = "Select * From Table_1";
pRecordset->Open ((IDispatch *) pCommand, vtMissing, adOpenForwardOnly,
adLockReadOnly, adCmdUnknown);
имею сообщениен:
IDispatch error #3092 Code meaning = %s
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
Если указать любую другую таблицу базы, кроме таблицы Table_1, то код
продолжает выполняться дальше вниз, всё ОК!
А для таблицы Table_1 следующий оператор не выполняется.
Аварийного завершения нет. Чем не нравится
указанная таблица функции pRecordset->Open() ?
Если таблицу скопировать и сохранить под другим именем, то ОК!
Где и что сделать, чтобы появилась ‘любовь’ к имени таблицы ‘Table_1’?
Ниже показываю полный код, прикреплёный к командной кнопке на dialog window:
void CAdodc_my::OnBnClickedButton8()
{
_CommandPtr pCommand;
HRESULT hr = pCommand.CreateInstance (__uuidof (Command));
if (FAILED (hr))
{
AfxMessageBox ("Can't create an instance of Command");
return;
}
pCommand->ActiveConnection = m_pConn2; // значение переменной m_pConn2
// определено в событии OnInitDialog(), оно указывает
// что подсоединена база ACCESS
pCommand->CommandText = "Select * From Table_1"; // Table_1 -
// имя таблицы из множества их в базе ACCESS
_RecordsetPtr pRecordset;
hr = pRecordset.CreateInstance (__uuidof (Recordset));
if (FAILED (hr))
{
AfxMessageBox ("Can't create an instance of Recordset");
return;
}
pRecordset->CursorLocation = adUseClient;
pRecordset->Open ((IDispatch *) pCommand, vtMissing, adOpenForwardOnly,
adLockReadOnly, adCmdUnknown);
// если указать любую
// другую таблицу базы, кроме таблицы Table_1, то код
продолжает выполняться дальше вниз, всё ОК!
А для таблицы Table_1
следующий оператор не выполняется. Аварийного завершения нет. Чем не нравится
указанная таблица функции pRecordset->Open() ?
{
. . .
}
}
catch( _com_error &e )
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
TRACE( "Exception thrown for classes generated by #import" );
TRACE( "\tCode = %08lx\n", e.Error());
TRACE( "\tCode meaning = %s\n", e.ErrorMessage());
TRACE( "\tSource = %s\n", (LPCTSTR) bstrSource);
TRACE( "\tDescription = %s\n", (LPCTSTR) bstrDescription);
MessageBox("\tCode meaning = %s\n", e.ErrorMessage());
}
catch (...)
{
TRACE ( "*** Unhandled Exception ***" );
MessageBox("*** Unhandled Exception ***" );
}
|
|
|