ADO连ACCESS为什么总是_com_error?
圣章个人财务管理系统.exe 中的 0x7c812a5b 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012f0f4 处的 _com_error。
代码如下:
// stdafx.h : 标准系统包含文
#include<oledb.h>
// datebaseDlg.h : 头文件
#pragma once
#import"C:\Program Files\Common Files\System\ado\msado15.dll"\
no_namespace rename("EOF","adoEOF")
public:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
BOOL CdatebaseApp::InitInstance()
{
if(!AfxOleInit())
{
AfxMessageBox(L"未能初始化COM");
return FALSE;
}
CoInitialize(NULL);
BOOL C圣章个人财务管理系统Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
CString strConn=(L"Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\\data.mdb;");
bstr_t bstrConn=strConn.AllocSysString();
m_pConnection.CreateInstance(_uuidof(Connection));
m_pConnection->Open(bstrConn,"","",-1);
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pRecordset->Open("Select * from 收支表",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t varId,varMoney,varState,varSource,varRemark,varDate;
CString m_Data;
TRY
{
m_pRecordset->MoveFirst();
varId=m_pRecordset->GetCollect("ID");
varMoney=m_pRecordset->GetCollect("金额");
varState=m_pRecordset->GetCollect("资金状态");
varSource=m_pRecordset->GetCollect("来源/去向");
varRemark=m_pRecordset->GetCollect("备注");
varDate=m_pRecordset->GetCollect("日期");
if(varId.vt!=VT_NULL)
m_Id=(char*)_bstr_t(varId);
if(varMoney.vt!=VT_NULL)
m_Money=(char*)bstr_t(varMoney);
if(varState.vt!=VT_NULL)
m_State=(char*)_bstr_t(varState);
if(varSource.vt!=VT_NULL)
m_Source=(char*)_bstr_t(varSource);
if(varRemark.vt!=VT_NULL)
m_Remark=(char*)_bstr_t(varRemark);
if(varDate.vt!=VT_NULL)
m_Data=(char*)_bstr_t(varDate);
}
CATCH_ALL(e)
AfxMessageBox(L"初始化失败");
END_CATCH_ALL
UpdateData(FALSE);
void C圣章个人财务管理系统Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
if(!m_pRecordset->BOF)
{
_variant_t varId,varMoney,varState,varSource,varRemark,varDate;
CString m_Data;
TRY
{
m_pRecordset->MovePrevious();
varId=m_pRecordset->GetCollect("ID");
varMoney=m_pRecordset->GetCollect("金额");
varState=m_pRecordset->GetCollect("资金状态");
varSource=m_pRecordset->GetCollect("来源/去向");
varRemark=m_pRecordset->GetCollect("备注");
varDate=m_pRecordset->GetCollect("日期");
if(varId.vt!=VT_NULL)
m_Id=(char*)_bstr_t(varId);
if(varMoney.vt!=VT_NULL)
m_Money=(char*)bstr_t(varMoney);
if(varState.vt!=VT_NULL)
m_State=(char*)_bstr_t(varState);
if(varSource.vt!=VT_NULL)
m_Source=(char*)_bstr_t(varSource);
if(varRemark.vt!=VT_NULL)
m_Remark=(char*)_bstr_t(varRemark);
if(varDate.vt!=VT_NULL)
m_Data=(char*)_bstr_t(varDate);
}
CATCH_ALL(e)
AfxMessageBox(L"Error");
END_CATCH_ALL
UpdateData(FALSE);
}
当记录在第一条时,一按button2就出错,提示:"圣章个人财务管理系统.exe 中的 0x7c812a5b 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012f0f4 处的 _com_error。"