代码如下
_variant_t vra;
VARIANT *vt1 = NULL;
UpdateData(TRUE);
_CommandPtr cmd; //command object
_RecordsetPtr rs; //recordset object
_ConnectionPtr conn; //connection object
CString m_select;
m_select="select s_no,s_name from Student where s_no='991102'";
cmd.CreateInstance( __uuidof(Command));
rs.CreateInstance(__uuidof(Recordset));
conn.CreateInstance(__uuidof(Connection));
conn=g_GlobalMag.m_connection; cmd->ActiveConnection = conn;
cmd->CommandText=m_select.GetBuffer(0);
cmd->CommandType= adCmdText;
rs->CursorType=adOpenStatic;
rs->LockType=adLockOptimistic;
rs = cmd->Execute(NULL,NULL, adCmdText);
if(rs->adoEOF||rs->BOF)
::MessageBox(NULL,"wrong","无记录",MB_OK);
try
{
rs->MoveFirst();///移到首条记录
// rs->MoveNext();
if(rs->adoEOF||rs->BOF)
::MessageBox(NULL,"wrong","无记录",MB_OK);
rs->Delete(adAffectCurrent);///删除当前记录
rs->Update();///保存到库中
// rs=NULL;
// rs = cmd->Execute(NULL,NULL, adCmdText);
}
catch(_com_error &error)
{
CString Error;
_bstr_t bstrSource(error.Source());
_bstr_t bstrDescription(error.Description());
Error.Format( "数据库错误\n\tCode = %08lx\n\tCode meaning = %s\n\tSource = %s\n\tDescription = %s\n",error.Error(),error.ErrorMessage(),
(LPCSTR)bstrSource, (LPCSTR)bstrDescription ); //throw CDBError(Error);
::MessageBox(NULL,Error,"模块错误!",MB_OK);
}
错误是对象不能提供执行所需的操作
为什么?
_variant_t vra;
VARIANT *vt1 = NULL;
UpdateData(TRUE);
_CommandPtr cmd; //command object
_RecordsetPtr rs; //recordset object
_ConnectionPtr conn; //connection object
CString m_select;
m_select="select s_no,s_name from Student where s_no='991102'";
cmd.CreateInstance( __uuidof(Command));
rs.CreateInstance(__uuidof(Recordset));
conn.CreateInstance(__uuidof(Connection));
conn=g_GlobalMag.m_connection; cmd->ActiveConnection = conn;
cmd->CommandText=m_select.GetBuffer(0);
cmd->CommandType= adCmdText;
rs->CursorType=adOpenStatic;
rs->LockType=adLockOptimistic;
rs = cmd->Execute(NULL,NULL, adCmdText);
if(rs->adoEOF||rs->BOF)
::MessageBox(NULL,"wrong","无记录",MB_OK);
try
{
rs->MoveFirst();///移到首条记录
// rs->MoveNext();
if(rs->adoEOF||rs->BOF)
::MessageBox(NULL,"wrong","无记录",MB_OK);
rs->Delete(adAffectCurrent);///删除当前记录
rs->Update();///保存到库中
// rs=NULL;
// rs = cmd->Execute(NULL,NULL, adCmdText);
}
catch(_com_error &error)
{
CString Error;
_bstr_t bstrSource(error.Source());
_bstr_t bstrDescription(error.Description());
Error.Format( "数据库错误\n\tCode = %08lx\n\tCode meaning = %s\n\tSource = %s\n\tDescription = %s\n",error.Error(),error.ErrorMessage(),
(LPCSTR)bstrSource, (LPCSTR)bstrDescription ); //throw CDBError(Error);
::MessageBox(NULL,Error,"模块错误!",MB_OK);
}
错误是对象不能提供执行所需的操作
为什么?
rs->LockType=adLockOptimistic;
记录集的打开方式不对!不能用静态的方式。
rs->CursorType=adOpenDynamic;