关于C++里的access访问

bfirst 2009-08-21 07:52:26
我在MFC里访问ACCESS数据库,具体代码如下:


CString szSql;
szSql.Format("SELECT * FROM TASKLIST WHERE STATE1='%s' ORDER BY CODE ASC", STR_TASK_STATE_NEW);
bool bNew = false;
BOOL bSuccess = this->m_pTaskSet->Open(szSql);
int nnn = this->m_pTaskSet->GetRecordCount();
if (bSuccess)
{

Task tempTask;
while (!this->m_pTaskSet->IsEOF())
{
//----------------add 2005.5.30
if (this->FillTaskStruct(&tempTask) == FALSE)
{
this->m_pTaskSet->MoveNext();
continue;

}
//--------------------------------


Task prevTask;
int nCount = (int)(pTaskArray->GetCount());
if (nCount > 0)
{
prevTask = pTaskArray->GetAt(nCount - 1);
if (prevTask.m_strID != tempTask.m_strID)
{
pTaskArray->InsertAt(nCount, tempTask);
}
}
else
{
pTaskArray->InsertAt(nCount, tempTask);
}

//-----------------------------------------------------------

this->m_pTaskSet->Edit();
this->m_pTaskSet->SetFieldValue("STATE1", STR_TASK_STATE_WAIT);
this->m_pTaskSet->Update();
this->m_pTaskSet->MoveNext();
}
其实就是检索出表中某个字段为"00"的记录,并把它改为"01",其中这个字段为STATE1,STR_TASK_STATE_NEW为"00",STR_TASK_STATE_WAIT为"01"!但是现在有一个问题,是偶然出现的!就是在执行程序时,会出现"无法定位更新行,一些值已可能在最后一次读取后更改"!我已经查过很多资料,说是在表中去掉默认值,或是加上主键!但是都没有效果,请问各位大侠,有更有效的处理方法吗??急切盼望中................... (其中TASK只是我自定义的一个结构体,应该与出现这个错误无关)
...全文
165 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bfirst 2010-01-19
  • 打赏
  • 举报
回复
解决了,我就是在release下编译了一下,就没在出现过了!也许也不是真正的解决,只是暂时性的吧!不过应给大家散分,谢谢帮忙!
Welson80 2009-08-21
  • 打赏
  • 举报
回复
没用到就不是GetRecordCount()的问题了。Open后MoveFirst 试试。
bfirst 2009-08-21
  • 打赏
  • 举报
回复
这个NNN好象没有用到,我现在正在试看看是不是GetRecourCount()的问题
Welson80 2009-08-21
  • 打赏
  • 举报
回复
你的nnn在下面没用到吗?this->m_pTaskSet->GetRecordCount(),这个用法可能有问题,m_pTaskSet需要先用MoveNext()遍历后才能得到正确结果
bfirst 2009-08-21
  • 打赏
  • 举报
回复
this->m_pTaskSet->SetFieldValue("STATE1", STR_TASK_STATE_WAIT); 修改后直接不就update里嘛,应该就是提交了吧!
bfirst 2009-08-21
  • 打赏
  • 举报
回复
这里边就是最开始的时候用了select的sql语句,别的地方也没在用到了啊!应该不会有问题的吧SQL语句
zhongchengli 2009-08-21
  • 打赏
  • 举报
回复
应该是生成的sql语句有问题,debug一下生产的sql语句是什么样的,就知道问题所在了。
superbtl 2009-08-21
  • 打赏
  • 举报
回复
没有及时提交 commit;
猜测

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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