在使用AdoTAble1.Delete后,接着再使用AdoTable1.Post,但如果AdoTable1中只有一条记录的话,使用post就会报错,怎样解决?(

  • 主题发起人 主题发起人 del520
  • 开始时间 开始时间
D

del520

Unregistered / Unconfirmed
GUEST, unregistred user!
在使用AdoTAble1.Delete后,接着再使用AdoTable1.Post,但如果AdoTable1中只有一条记录的话,使用post就会报错,怎样解决?(10分)<br />如果表中只有一条记录,在使用delete之后,再使用post就会报错。怎样解决?
 
只有一条记录再delete之后是不是就没有记录了?
还不如把文件删了算了
你在post处用一个自己try来处理异常
如果出错的话,你就输出说没有记录了
 
To cool
我在delete之后加入一个post
如果记录比较多这没事儿,但有一种可能就是当表只有一条记录时,使用delete之后再post
就会报错,对于try我一直没试出来,我这样试问题任然存在:

Try
AdoTable1.delete;
AdoTable1.post
except
ShowMessage('xxxx');
end;
 
删除后再POST简直浪费资源。
 
我发现很多朋友并不看编译的信息,无论初学的,还是老手,当然我也是一个啦。
程序解决错误不难,发现错误最难,多点调试吧
 
打ADO补丁没有?
听课。。。
 
用sql语句:
tadoquery1.close;
tadoquery1.sql.clear;
tadoquery1.sql.add('delete from tablename where fieldname='''+str+'''');
tadoquery1.execsql;
 
唉,真麻烦,本来我是想说得简单点儿的,其实记录并没有真正的删除,而只是改变
了filter。但我想这个删除最后一条记录的效果差不多。可我必须要使用POST。

如我的TABLE中设置filter为 类别='AAA',结果满足条件的只有一条,也就是说在dbgrid中只有
一条记录显示出来,现在我要改变类别,我将Filter为 类别='bbb',而这时我必须使用
POST否则我的改变将有可能无效,也就是这时(原条件只有一条时),将这个记录进行改
变之后再使用POST准报错。
 
D5中的ADO要打补丁,先装D5的补丁,再装ADO的补丁
 
你这样做肯定出错。指针错位了
换种办法吧。这类问题最好用Query,且尽量不用FILTER。
 
报什么错?数据集没有处于编辑状态???

To cool
我在delete之后加入一个post
如果记录比较多这没事儿,但有一种可能就是当表只有一条记录时,使用delete之后再post
就会报错,对于try我一直没试出来,我这样试问题任然存在:

Try
AdoTable1.delete;
AdoTable1.edit;//改变数据集状态。
AdoTable1.post;
except
ShowMessage('xxxx');
end;

 
ado的确有这种问题,打了补丁也不行.都是发生在adodataset或adoquery中删掉最后一条记录时.
可能是delphi封装ado时的bug,用ado原生对象吧.
 
哎呀,其实只有edit和insert或者append是需要post的,delete之后是变成正常的dsBrowse状态
是不需要、而且是不能post的
 
你是在编译器的集成环境下运行的还是编译好了以后运行其可执行文件。
如果是在编译环境下运行,try是不会其作用的,
你试试编译好以后,单独执行
下面的代码我在win2000+delphi5下可以的,没有装补丁
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Edit;
try
Table1.Post;
except
ShowMessage('1');
end;
end;
 
你是要删除一条记录,直接调用Delete就可以了.
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部