数据库是SQL2000 SERVER
//第一步
m_recordset->Open( _variant_t(sql), m_Business.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText );
{
m_recordset->Delete( adAffectCurrent );
MessageBox("1");
if( m_recordset->State )
m_recordset->Close();//第二步
try{
sql.Format( "Select * From table1 Where ID = '%s' ", list );
m_recordset->Open( _variant_t(sql), m_Business.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText );
m_recordset->MoveFirst();
while( !m_recordset->adoEOF )
{
m_recordset->Delete( adAffectCurrent );
MessageBox("2");
m_recordset->MoveNext();
}
try{
if( m_recordset->State )
m_recordset->Close();
}catch( _com_error e ){MessageBox("Close error2");}
}catch( _com_error e ){MessageBox("error2");}//第三步
try{
sql.Format( "Select * From table2 Where ID = '%s' ", list );
m_recordset->Open( _variant_t(sql), m_Business.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText );
m_recordset->MoveFirst();
vtemp = m_recordset->GetCollect( _T("UseID") );
stemp = (LPCTSTR)(_bstr_t)vtemp;
list = stemp;
while( !m_recordset->adoEOF )
{
m_recordset->Delete( adAffectCurrent );
MessageBox("3");
m_recordset->MoveNext();
}
try{
if( m_recordset->State )
m_recordset->Close();
}catch( _com_error e ){MessageBox("Close error3");}
}catch( _com_error e ){MessageBox("error3");}//第四步
try{
sql.Format( "Select * From table3 Where ID = '%s' ", list );
m_recordset->Open( _variant_t(sql), m_Business.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText );
m_recordset->MoveFirst();
while( !m_recordset->adoEOF )
{
m_recordset->Delete( adAffectCurrent );
MessageBox("4");
m_recordset->MoveNext();
}
try{
if( m_recordset->State )
m_recordset->Close();
}catch( _com_error e ){MessageBox("Close error4");}
}catch( _com_error e ){MessageBox("error4");}
}问题出在第二步中,只要第二步OPEN的数据有2条以上,第1步的和第2步中打开的2条数据虽然会正常被删除掉,但是第3步和第4步中的数据就不会正常被删除掉,而且会显示3个erro2-erro4的错误框.
可是只要第二步中打开的数据只有1条,那么以上的删除都会很正常的被执行删除.
这到底是怎么回事呀??