access数据库,Update表中信息时报“键列信息不足或不正确。更新影响多行”

豆伴儿 2012-07-12 11:22:47
小女刚接触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;
}
...全文
210 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
豆伴儿 2012-07-13
  • 打赏
  • 举报
回复
说了前提是不能设主键的~
[Quote=引用 3 楼 的回复:]

用主键定位记录集来进行修改。
[/Quote]
zwfgdlc 2012-07-12
  • 打赏
  • 举报
回复
直接用SQL语句更新,

UPDATE table SET Field='xxx' WHERE aaa=bbb
zyq5945 2012-07-12
  • 打赏
  • 举报
回复
用主键定位记录集来进行修改。
豆伴儿 2012-07-12
  • 打赏
  • 举报
回复
ADO连接数据库怎么用Field属性?
[Quote=引用 1 楼 的回复:]

直接用SQL语句更新,
SQL code

UPDATE table SET Field='xxx' WHERE aaa=bbb
[/Quote]

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧