关于C++里的access访问
我在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只是我自定义的一个结构体,应该与出现这个错误无关)