用ado+sql2000,
连接和读数据库都没有问题!
就是添加有问题
添加段如下:
hr=m_recordset->AddNew();
hr=m_recordset->get_Fields(&fields);
for(int i=0;i<nColNum;i++)
{
varCount.lVal=i;
hr=fields->get_Item(varCount,&field);
field->get_Type(&data_type);
if(!ConstructVar(saValues.GetAt(i),data_type,&varValue))
return FALSE;
hr=field->put_Value(varValue);
}
fields->Release();
field->Release();
改成:
hr=m_recordset->AddNew();
hr=m_recordset->get_Fields(&fields);
for(int i=0;i<nColNum;i++)
{
varCount.lVal=i;
hr=fields->get_Item(varCount,&field);
field->get_Type(&data_type);
                           //转换类型                         
if(!ConstructVar(saValues.GetAt(i),data_type,&varValue))
return FALSE;
hr=field->put_Value(varValue);
}
hr=m_recordset->AddNew();
fields->Release();
field->Release();
后就可以!
同时添加后,在查询就会出错!
请各位指教!

解决方案 »

  1.   

    如何查询出错代码的信息!
    如:IDispatch:#3119是什么意思!
      

  2.   

    不是另的问题,而是要把记录集打开m_recordset->open(),然后检查一下记录集是否为空ValEof = m_recordset->get_adoEOF(&ValEof)要不然查询也会出错。
      

  3.   

    这么长的代码,我一时看不明白。不过,我给你一个主意。既然用AddNew不行,就直接用Sql语句插入记录吧。CString str=CString("insert into tablename values(...)");
    try
        {
        m_adoDB.Execute(str);
        }
    catch(...)
        {
        }
      

  4.   

    m_recordset->Open(...)正确!
    Update会出错信息:IDispatch:#3119,
    e.Discription()显示:对象打开出错,操作不允许!
      

  5.   

    发现的确要update(),
    感谢jingjing8178,
    并且,打开后要关闭!才不会出现IDispatch#3119的问题!