ADOQuery 中删除数据为什么不能马上刷新

catchchance 2003-07-30 08:57:05
数据用dbgrid 显示,数据用TADOQuery 连接,当删除纪录后(用的是的ADOQuery2),我这样写代码
with ADOQuey1 do
begin
close;
end;
end;
...全文
152 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
zorrohong 2003-08-23
  • 打赏
  • 举报
回复
奇怪,.close;
.open;
应该能够解决的呀?!close的时候,数据源应该update了吧?你看当时数据库里的情况就知道了.
cnhgj 2003-08-23
  • 打赏
  • 举报
回复
active := false;
active := true;
LiuXing123 2003-08-23
  • 打赏
  • 举报
回复
up
liangzongqiang 2003-08-23
  • 打赏
  • 举报
回复
requery
qiume 2003-08-06
  • 打赏
  • 举报
回复
对,
Close;
Open;
lw549 2003-08-06
  • 打赏
  • 举报
回复
我用D6,只要close然后再open就可以刷新。
一直这样用的。
walkmangood 2003-08-06
  • 打赏
  • 举报
回复
关键的是在这:ADOCONNECTION2.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='
+ExtractFilepath(application.ExeName)+'playboy.mdb;';
adoconnection2.Connected :=true;

walkmangood 2003-08-06
  • 打赏
  • 举报
回复
我遇到过你的问题,我是这么解决的。


把ADOCONNECTION断开,然后在连接,在把adoquery.open.这样就可以了。

我把代码写在下面:

ADOCONNECTION2.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='
+ExtractFilepath(application.ExeName)+'playboy.mdb;';
adoconnection2.Connected :=true;



adoquery11.Active:=false;
adoquery11.Parameters.ParamByName('aid').Value:=nnd;
adoquery11.Open;
edit4.Text:=formatfloat('0.00',adoquery11.fieldbyname('sumbukuan').AsFloat);
adoconnection2.Connected :=false;


在怎么都不会有问题

catchchance 2003-07-31
  • 打赏
  • 举报
回复
郁闷那,上面的办法搞不定的
myboor 2003-07-31
  • 打赏
  • 举报
回复
我也是用关开数据集达到目的,但操作后,无法保持当前的记录号,还要另加处理,郁闷!
catchchance 2003-07-31
  • 打赏
  • 举报
回复
myboor(菜菜菜鸟) ,你也碰到这种问题吗
myboor 2003-07-31
  • 打赏
  • 举报
回复
: wolf_su(不系舟)
说的也不可以用。
catchchance 2003-07-31
  • 打赏
  • 举报
回复
: wolf_su(不系舟) :好像没反应,怎么会这么怪的问题
wolf_su 2003-07-31
  • 打赏
  • 举报
回复
adoquery1.UpdateBatch(arAll);
adoquery1.Refresh;
catchchance 2003-07-31
  • 打赏
  • 举报
回复
IORILI(李少龙) 有什么办法啊,我要在一个dgrid中显示和删除数据
catchchance 2003-07-31
  • 打赏
  • 举报
回复
上面是源代码,各位帮忙看一下
catchchance 2003-07-31
  • 打赏
  • 举报
回复
procedure TForm_xjyxx.Button3Click(Sender: TObject);
var
confirm:word;
begin
if dbgrid1.SelectedField.AsString<>''then
begin
confirm:=messagedlg('确实要删除这条记录吗?',mtconfirmation,[mbyes,mbno],0);
if confirm=mryes then
with ADOQuery2 do
begin
{ Close;
sql.Clear;
sql.Add('select copid from data where copid='+quotedstr(dbgrid1.Fields[0].asstring));
open;
if eof=false then
begin
showmessage('清先删除该员工巡更信息!');
exit;
end;

Close;
sql.Clear;
sql.Add('select copid from xgbc where copid='+quotedstr(dbgrid1.Fields[0].asstring));
open;
if eof=false then
begin
showmessage('清先删除巡更班次中该员工的信息!');
exit;
end;
}
Close;
sql.Clear;
sql.Add('delete from cop where copid='+quotedstr(dbgrid1.Fields[0].asstring));
ExecSQL;
end;
with ADOQuery1 do
begin
Close;
sql.clear;
sql.Add('select *from cop');
Open;
end;
showmessage('删除成功!');
end
else
showmessage('请选择需要删除的巡检员!');
end;
这样子还不算重装数据吗
IORILI 2003-07-31
  • 打赏
  • 举报
回复
他不是数据感知控件
IORILI 2003-07-31
  • 打赏
  • 举报
回复
道理是一样的哟:)因为用dbgrid显示query查询出来的数据,不直接反应数据库
比如在你的机器上有两个程序同时访问table 开始的时候,都显示全部记录,如果一个程序执行了删除操作,但在另一个程序里是不能反映出来的,
fhuibo 2003-07-31
  • 打赏
  • 举报
回复
重新打开就是了
加载更多回复(13)

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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