BOOL CDataOperate::AddNewRecord(CStringArray &fd, CStringArray &val)
{
CString strFd,strVal;
int iType;
_variant_t varVal,vtIndex;
vtIndex.iVal=-1;
vtIndex.vt=VT_I2;
FieldsPtr pField=NULL;
pField=pRecordset->GetFields(); try
{
pRecordset->AddNew();
for(int j=0;j<fd.GetSize();j++)
{
strFd=fd.GetAt(j);
strVal=val.GetAt(j);
GetFieldIndex((_bstr_t)strFd,vtIndex);
GetFieldProperty((_bstr_t)strFd,iType);
ConstructVar(strVal,iType,&varVal);
// pRecordset->PutCollect(vtIndex,varVal);
pField->GetItem(vtIndex)->Value=varVal;;
}
pRecordset->Update();//SQL Server无法更新,对Access2000操作正确
}
catch(_com_error &e)
{
AfxMessageBox(e.ErrorMessage());
return FALSE;
}

pField->Release();
return TRUE;
}

解决方案 »

  1.   

    可是用Access好好的。
    是什么打开方式?
    (strQuery:"select * from newtime order by id";)
    pRecordset->Open(strQuery,source,adOpenDynamic,adLockOptimistic,adCmdText);
      

  2.   

    试着单步调一下,是否确实是update出现异常,
    还有pRecordset创建时的属性设置,是否onlyread,
    还有游标类型……
      

  3.   

    确实是update出现异常,
    另外这段程序写入access是没问题的,应该不会是pRecordset的属性问题吧
    为什么会用到sql server2000 就不行了呢?