小女刚接触VC,遇到这么个BUG要改,各位高手帮帮忙
ADO连接access数据库,Update表中信息时报“键列信息不足或不正确。更新影响多行”。改一个单元格的内容会把同一列里面原来值相同的地方全部修改掉!大家帮帮忙!
前提肯定不能修改表结构和设主键的!try
{
hr = pRecordSet.CreateInstance(_uuidof(Recordset));
if(SUCCEEDED(hr))
{
pRecordSet->PutRefActiveConnection(theApp.m_pConnection);
pRecordSet->CursorType = adOpenStatic;
pRecordSet->CursorLocation = adUseClient;
hr = pRecordSet->Open(bstrQuery,vNull,adOpenForwardOnly,adLockOptimistic,adCmdText);
if(!pRecordSet->GetadoEOF())
{

int icount = pRecordSet->GetRecordCount();
if(icount > 1)
{
pRecordSet->MoveFirst();
pRecordSet->Move(m_SelRow);
pRecordSet->PutCollect((_variant_t)strColumn,(_variant_t)value);
pRecordSet->Update();
pRecordSet->Close();
}
else if (icount == 1)
{
long i = 0;
pRecordSet->PutCollect(i, value);
pRecordSet->Update(vNull, vNull);
pRecordSet->Close();
}
}
}
}
catch(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
TRACE("code=%08lx\n",e.Error());
TRACE("\tmeaning=%s\n",e.ErrorMessage());
TRACE("\tsource=%s\n",(LPCTSTR)bstrSource);
TRACE("\tDescription=%s\n",(LPCTSTR)bstrDescription); AfxMessageBox(e.Description());
return 0;
}
catch(...)
{
AfxMessageBox("数据更新失败");
return 0;
}