对不起,我还有些基本概念不懂.我是用ado控件(m_adodc)绑定datagrid(m_datagrid)嵌在Dialog中(ado控件中cmd里写select * from sheet)我在OnInitDialog() 中我想执行删除"表a",把"表b"复制为"表a"的操作BOOL CBottomDlg::OnInitDialog() 
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here m_pRecordset=m_adodc.GetRecordset();//获得ado控件的记录集 m_pRecordset.Open(_variant_t("insert sheet select * from backup"),m_pRecordset.GetActiveConnection(),2,3,1); m_adodc.SetRecordset("SELECT * FROM sheet"); m_adodc.Refresh(); m_pRecordset.MoveFirst();
在执行Open语句时,弹出错误对话框,"对象打开时,不允许操作".
请问如何解决?要改哪里?

解决方案 »

  1.   

    “我是用ado控件(m_adodc)绑定datagrid(m_datagrid)嵌在Dialog中(ado控件中cmd里写select * from sheet)”
    应该会导致
    “在执行Open语句时,弹出错误对话框,"对象打开时,不允许操作".”你可以通过在Open前先Close消除这个错误。
      

  2.   

    1.sheet表和backup表的字段及类型是否完全一致?2.建议sql语句不要写成“select * from 表",可以写成 "select 字段1,字段2,... from 表"
      

  3.   

    结构完全相同,连记录数都一样现在通过先close的方法的确能够把backup表的东西完全弄到sheet中去,但由于使用的是先delete再insert,所以每次覆盖的时候db文件都会大100多k,实在无法忍受,所以就用最土的办法,一个一个字段赋值。大小半k都不加。