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

nickong 2003-02-13 12:29:53
我使用的是ADODataSet进行编程的!
...全文
76 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
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;

加载更多回复(1)

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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