为什么我添加一条记录成功后还报错:“ADODataSet: DataSet not in edit or insert mode”??怎么回事啊!

nickong 2003-02-13 12:29:53
我使用的是ADODataSet进行编程的!
...全文
33 点赞 收藏 21
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
liufguo 2003-05-19
我昨天也遇到类似问题:不过,我改过如下(类似代码),就成功了:
procedure CreateDBConnection()
begin
ADODataSet1.Close;
strSQL:='SELECT * FROM TB_Test WHERE FileID= '+sFileID ;
ADODataSet1.Edit; //删除此行
ADODataSet1.CommandText:=strSQL;
ADODataSet1.Open; //改为:ADODataset1.acive:=true;
end;

procedure t2()
begin
CreateDBConnection;
ADODataSet1.Append;//删除此行
ADODataSet1.Edit;
Memstream.Position:=0;
TBlobField(ADODataSet1.FieldByName('FileBody')).LoadFromStream(Memstream);
ADODataSet1.Post;
ADODataSet1.Close;
end;
回复
rocktan 2003-04-29
我也碰到这样的问题,不过我在自己机器上运行可以,到别人机器上报这样的错应该不时程序的问题吧?
回复
gongzhijia 2003-02-18
检查代码肯定是多了一个POST.
回复
nnwq 2003-02-18
Stack Overflow?
你的Memstream是怎么取得内容的,每次取值是否都Memstream.Clear。
回复
ouyi 2003-02-18
好象要edit先,才能用append.否则就出错。我以前也碰到过,你试试看。
回复
nickong 2003-02-17
还是没有搞定啊!有没有人能帮忙啊!救救我啊!
回复
nickong 2003-02-14
啊!!!!!!!!!!!!!

太!!!!!!!!!!!!!

有效吗?
回复
okgxs 2003-02-14
把代码都删除重新写一下
回复
nickong 2003-02-14
现在的提示还多了一个,"Stack Overflow"!!!
回复
beata88 2003-02-14
你既然已经Append就不要Edit
回复
Billy_Chen28 2003-02-13
adodataset.edit;
ADODataset.Commandtext:='update.....
回复
wjlsmail 2003-02-13
AfterPost 中是不是有编辑操作 ?
回复
hfyun 2003-02-13
主要看看AfterPost事件,如不清楚,就把你的代码贴出来吧,大家才好找问题。
回复
njbudong 2003-02-13
1:Query要执行(对insert ,update,delete) .ExecSQL的操作;
2:没有指定数据库

回复
李战 2003-02-13
检查该ADODataSet的其他事件处理程序,看看是不是在POST之后还修改表。
回复
wjlsmail 2003-02-13
试试看 :

procedure CreateDBConnection()
begin
ADODataSet1.Close;
strSQL:='SELECT * FROM TB_Test WHERE FileID= '+sFileID ;
ADODataSet1.CommandText:=strSQL;
ADODataSet1.Open;
end;

procedure t2()
begin
CreateDBConnection;
ADODataSet1.Edit;
Memstream.Position:=0;
TBlobField(ADODataSet1.FieldByName('FileBody')).LoadFromStream(Memstream);
ADODataSet1.Post;
end;
回复
tfxg 2003-02-13
应该是少了这么几句:
adodataset1.insert;
或 adodataset1.edit;
回复
hydonlee 2003-02-13
procedure CreateDBConnection()
begin
ADODataSet1.Close;
strSQL:='SELECT * FROM TB_Test WHERE FileID= '+sFileID ;

ADODataSet1.Edit; //这句什么意思? 为什么要加到这?

ADODataSet1.CommandText:=strSQL;
ADODataSet1.Open;
end;

procedure t2()
begin
CreateDBConnection;
ADODataSet1.Append;

ADODataSet1.Edit; //还有这一个, Append后就已经是新增状态了,为什么还要Edit?

Memstream.Position:=0;
TBlobField(ADODataSet1.FieldByName('FileBody')).LoadFromStream(Memstream);
ADODataSet1.Post;
ADODataSet1.Close;
end;
回复
mrfanghansheng 2003-02-13
试试这样……

procedure t2()
begin
CreateDBConnection;
ADODataSet1.Append;
ADODataSet1.Edit;
Memstream.Position:=0;
TBlobField(ADODataSet1.FieldByName('FileBody')).LoadFromStream(Memstream);
if (ADODataSet1.State =dsedit) or (ADODataSet1.State =dsinsert) then
begin
ADODataSet1.Post;

end;
ADODataSet1.Close;
end;
回复
Drate 2003-02-13
adodataset1.edit;
adodataset1.FieldByName('Field1').AsString := 'The Value';
adodataset1.post;

回复
加载更多回复
相关推荐
发帖
数据库相关
创建于2007-08-02

2454

社区成员

Delphi 数据库相关
申请成为版主
帖子事件
创建了帖子
2003-02-13 12:29
社区公告
暂无公告