I hope this will help C++ users using the comapi
//----Fetch
IAccpacViewPtr AccView;
IAccpacViewFieldsPtr AccFields;
int iSize=0;
AccView = AccDBLink->OpenView2(_T("OE0480"), NULL);
AccView->Init();
AccFields = AccView->Fields;
AccView->Browse(_T(""), FALSE);
if (AccView->Fetch()){
iSize = AccFields->GetFieldByName("INVNUMBERL")->GetValue().iVal;
}
AccView->Close();
//---- Using Read with a filter
IAccpacViewPtr AccView;
IAccpacViewFieldsPtr AccFields;
CString strCoName;
//CStringX="SAMLTD";
AccView = AccDBLink->OpenView2(_T("CS0001"), NULL);
HRESULT hRes = AccView->Init();
AccFields = AccView->Fields;
strFilter.Format("ORGID=\"%s\"", CStringX);
AccView->Browse(strFilter.AllocSysString(), TRUE);
AccView->Read();
strCoName = AccFields->GetFieldByName("CONAME")->GetValue().bstrVal;
AccView->Close();
//-------Read with Put
IAccpacViewPtr AccView;
IAccpacViewFieldsPtr AccFields;
CString strCoName;
VARIANT vTemp;
//CStringX="SAMLTD";
AccView = AccDBLink->OpenView2(_T("CS0001"), NULL);
HRESULT hRes = AccView->Init();
AccFields = AccView->Fields;
vTemp.vt = VT_BSTR;
vTemp.bstrVal=CStringX.AllocSysString();
AccFields->GetFieldByName("ORGID")->PutWithoutVerification(&vTemp);
AccView->Read();
strCoName = AccFields->GetFieldByName("CONAME")->GetValue().bstrVal;
AccView->Close();
//-------