CString sql= (CString)"Insert into Product (ProNum, State,Memo1,Operate) Values('";
     sql = sql + (CString)s_Edit;
     sql = sql + (CString)"','";
     sql = sql + (CString)s_State;
     sql = sql + (CString)"','";
     sql = sql + (CString)s_Memo;
     sql = sql + (CString)"','";
     sql = sql + (CString)s_Operate;
     sql = sql + (CString)"')";     m_Adodc.CommandTypeEnum = CAdodc1::adCmdText;
     m_Adodc.ConnectStringTypeEnum = CAdodc1::adConnectTypeOledb;
     m_Adodc.put_RecordSource(sql);
     m_Adodc.Refresh();
     m_DataGrid.Refresh();
 UpdateData(false);代码如上,我知道是因为 m_DataGrid.Refresh();这句引起的 refresh一般只能用来打开记录集,用来执行语句会出错误.但应该有什么解决方法呢?

解决方案 »

  1.   

    m_Adodc.Refresh(); 
    //是对已获得的记录集重新查询。你记录集都没有Open呢,那来的Refresh
      

  2.   

    请问楼上怎样open记录集呢..m_Adodc下都没有openrecord等之类的函数..能否具体给出代码呢
      

  3.   

    m_Adodc->Open(........)
    //参数可以看ADO程序员手册,网上有
    //ADO操作可以看看http://www.vckbase.com/document/finddoc.asp?keyword=ADO这里的内容
      

  4.   

    不好意思,看错,你用的是ADO控件,我看看
      

  5.   

      m_DataGrid.Refresh(); 
    之前绑定了数据源了吗?//动态绑定可以这样做
    LPUNKNOWN  pCursor=m_adodc1.GetDSCCursor();  
    ASSERT(pCursor!=NULL);  
    m_datagrid1.SetRefDataSource(pCursor);
      

  6.   

    已经绑定数据源的data sourse是IDC_ADODC1