奇怪的错误:DataSet not in edit or insert mode?

tigereye3 2004-08-24 08:41:38
我想在程序开始时对数据库中某一列的值进行初始化,因此在Form的OnCreate事件中写了如下代码:
ADOTable->Edit();
ADOTable->First();
while(!ADOTable->Eof)
{
ADOTable->FieldByName("判断")->AsBoolean=false;
ADOTable->Next();
}
ADOTable->Post();
运行时会报错:DataSet not in edit or insert mode.
但我修改了一下,这样写就不会报错:
ADOTable->Edit();
ADOTable->FieldByName("判断")->AsBoolean=false;
ADOTable->Post();
很是奇怪,不知道大家有没有遇到过这样的问题,请帮帮忙,谢谢!
...全文
203 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tigereye3 2004-08-24
谢谢各位!!!
这下搞懂了:)
回复
zuojianyou 2004-08-24
因为ADOTable->First();相当于ADOTable处于打开状态,并指向第一条记录;
所以原先的ADOTable->Edit()功能不起作用!
回复
wakala 2004-08-24
up
回复
constantine 2004-08-24
其实最好还是用adoquery想老大那样做,简单,效率高,
adotable这个可以不用就不用了,很多地方都不如adoquery来的好
回复
constantine 2004-08-24
ADOTable->First();
ADOTable->Next();
这两句你不知道他的作用,你
ADOTable->Edit();
ADOTable->FieldByName("判断")->AsBoolean=false;
ADOTable->Next();
这样写看看就知道了,Next这里也相当于Post,所以就有你那个问题
要想季老大那样写。
或者你干脆用批处理的方法,这样就不用那么多个了,头尾一个就够了,
改完再全部一起修改
回复
futulove 2004-08-24
应该是楼上说的那样吧
回复
sunliwen780502 2004-08-24
Up!
回复
jishiping 2004-08-24
其实对每条记录都做相同的修改,不如使用ADOQuery使用SQL语句,这样执行的效率更高,速度更快。
ADOQuery1->SQL->Text = "UPDATE xxx SET 判断=False"; //这儿的 xxx 是Table的名字
try {
ADOQuery1->ExecSQL();
}
catch(DatabaseError& e) {
ShowMessage(e.Message);
}
回复
jishiping 2004-08-24
每调记录修改之前都要调用Edit()函数,修改后调用Post()

ADOTable->First();
while(!ADOTable->Eof)
{
ADOTable->Edit();
ADOTable->FieldByName("判断")->AsBoolean=false;
ADOTable->Post();
ADOTable->Next();
}
回复
相关推荐
发帖
数据库及相关技术
创建于2007-08-02

1159

社区成员

C++ Builder 数据库及相关技术
申请成为版主
帖子事件
创建了帖子
2004-08-24 08:41
社区公告
暂无公告