用ado对access数据库进行更新时出现的怪问题。
我想对数据库中的所有记录按字段test排序,然后在t_id字段里面
添上记录号,用的就是下面的一个小程序。但是很奇怪,更新一会儿以后
就会报错退出,:(,不知道是什么原因。后来我去看那个数据库,发现
已经更新了8395个记录了!这是怎么回事呢?
void CVocDlg::OnAddId()
{
// TODO: Add your control notification handler code here
int n=1;
m_data.OpenData(); //打开数据库所有记录。
while(!m_data.m_pRecordset->adoEOF)
{
m_data.m_pRecordset->PutCollect("G_ID",(_variant_t)(long)n);
m_data.m_pRecordset->Update();
m_data.m_pRecordset->MoveNext();
n++;
}
m_data.Close();
}
那位大虾知道吗?
帮忙看看啊,我都急死了!
谢谢了!
问题点数:0、回复次数:8Top
1 楼mahatma_cn(研究硕士生)回复于 2003-06-06 01:46:50 得分 0
一个语句解决的问题你干嘛大动干戈???
你这样没有效率
用update语句。Top
2 楼hoco(流星雨)回复于 2003-06-06 10:54:11 得分 0
大虾,什么update语句啊?
我不懂,:)Top
3 楼fuyun(浮云)回复于 2003-06-06 11:04:15 得分 0
他意思用SQL 的update语句.Top
4 楼sdf123321()回复于 2003-06-06 11:55:12 得分 0
m_data.Close();之前用m_data.UpDate();Top
5 楼hoco(流星雨)回复于 2003-06-06 12:12:47 得分 0
怎么用啊?sql里面有变量吗?
update table set field= n+1;
这样吗?但是有变量可以定义吗?Top
6 楼hoco(流星雨)回复于 2003-06-06 12:14:15 得分 0
to:sdf123321
关键是根本就还没有到那一步啊!
// TODO: Add your control notification handler code here
int n=1;
m_data.OpenData(); //打开数据库所有记录。
while(!m_data.m_pRecordset->adoEOF)
{
m_data.m_pRecordset->PutCollect("G_ID",(_variant_t)(long)n);
m_data.m_pRecordset->Update();
m_data.m_pRecordset->MoveNext();
n++;
在循环内部就死了!:(,n=9437吧!可能有的时候不一样,:(
}
m_data.Close(); Top
7 楼lizmei001(暗黑)回复于 2003-06-06 15:47:07 得分 0
int n=1;
m_data.OpenData(); //打开数据库所有记录。
while(!m_data.m_pRecordset->adoEOF)
{
m_data.m_pRecordset->PutCollect("G_ID",(_variant_t)(long)n);
m_data.m_pRecordset->MoveNext();
n++;
}
m_data.m_pRecordset->Update();
m_data.Close();Top
8 楼hoco(流星雨)回复于 2003-07-29 10:07:17 得分 0
lizmei001(暗黑) :
还是不行啊!在执行到
m_data.m_pRecordset->Update();的时候出错了!
我的数据量可能比较大。3万多,有问题吗?
Top




