程序功能:先对各个表数据清空,然后加入数据。连接SQl数据库没有问题,但是在打开Recordset,连接表的时候有个表可以连接成功,有个表却不行,不知道什么原因。代码如下:
/**********delete customer table*****************/
m_pRecordsetCustomer.CreateInstance(__uuidof(Recordset));
try{
m_pRecordsetCustomer->Open("Customer",_variant_t((IDispatch*)m_pConnection,true),adOpenKeyset,adLockOptimistic,adCmdTable);
}
catch(_com_error *e){AfxMessageBox(e->ErrorMessage());}
if(!m_pRecordsetCustomer->BOF){
try{
m_pConnection->Execute("DELETE FROM Customer",&RecordsAffected,adCmdText);
}
catch(_com_error *e){AfxMessageBox(e->ErrorMessage());}
}
         /**********delete Offer table*****************/
m_pRecordsetOffer.CreateInstance(__uuidof(Recordset));
try{
m_pRecordsetOffer->Open("Offer",_variant_t((IDispatch*)m_pConnection,true),adOpenKeyset,adLockOptimistic,adCmdTable);
}
catch(_com_error *e){AfxMessageBox(e->ErrorMessage());}
if(!m_pRecordsetOffer->BOF){
try{
m_pConnection->Execute("DELETE FROM Offer",&RecordsAffected,adCmdText);
}
catch(_com_error *e){AfxMessageBox(e->ErrorMessage());}
}
可以说两段代码是一模一样的,但就删除customer表的数据可以,删除offer表的数据就不行。头疼啊!

解决方案 »

  1.   

    offer 表中的主键会不会是其他表的外键,这样的话,你是删不掉的。
      

  2.   

    连接数据库时使用的用户有没有权限操作offer表?
      

  3.   

    offer 表中的主键若是是其他表的外键,而你在引用外键时又没有指定ON DELETE CASCADE的话,就是删不掉的
      

  4.   

    Offer表和其他表都只有一个主键,就是它们的ID号,权限也没有特别的设置,和其他表完全一样。我试过把操作的权限都打勾,但是debug时还是出错。会不会是记录太多了,因为有240万条?
    我试一下直接在SQL Server里面删除算了。
      

  5.   

    我在SQL Server里面直接删除该表的所有条目了,删之前把所有权限都打勾,最后算是删除了。然后再运行程序没有问题,应该是权限的问题,因为在其他地方原先也存在不能打开Offer表的问题,现在也解决了。
    谢谢大家!