为什么空表插入第一条记录后在网格中不能显示?(50分)

  • 主题发起人 主题发起人 e518
  • 开始时间 开始时间
E

e518

Unregistered / Unconfirmed
GUEST, unregistred user!
D6,access2000,用adoconnection连接,查询用adoquery,表格为d6 的dbgrid,
插入为sql语句。启用了adoconnection 的事务,只有插入第二条时,在表格中
再一起出现。
 
插入后刷新试试
 
close,open及requery都做过了,不行。
 
那设置dataset的active为False及True试试
 
table.refresh;
dbgrid.refresh;
 
adoconnection的udl文件 的autocommit不能为true.
 
to LiZhongYu
不知如何设,能详细说说吗?可行的话,再加50分给你。
 
现在发现,只要在插入双数(如第2、4、6、8.。。)的记录时,grid也可即时更新!
 
你把事务先去掉,试试!
如果可以了,那估计是你事务的问题
 
贴出相关部分的代码来看看
 
代码如下,现在我发现,只要出错一次(如主键重复)后,以后的每次提交,在
REQUERY后,表格亦可即时显示。真是烦呀。。。。。。。。。。。。

try
ADOLink.BeginTrans;
with CommitSQL do begin
Close;
SQL.Clear;
SQL.Add(SQLStr);
ExecSQL;
end;
ADOLink.CommitTrans;
Result:=True;
end;
except
ADOLink.RollbackTrans;
Result:=False;
end;
 
非常关注中,我也遇到这个情况,还没有解决。我用的是Access97
 
我说的autocommit属性只有连sql server时才有。
数据库进行更新(如insert;delete;update)之后,客户端的数据不能随之更新的,
除非你进行了刷新操作(如close,open;refresh等)。
如果你试过close;open;还不行的话,估计是有相关的dataset.disablecontrols=true了。
试试这样写吧:
try
ADOLink.BeginTrans;
with CommitSQL do begin
Close;
SQL.Clear;
SQL.Add(SQLStr);
ExecSQL;
end;
ADOLink.CommitTrans;
Result:=True;
end;
except
ADOLink.RollbackTrans;
Result:=False;
end;
dbgrid1.datasource.dataset.disableControls;
dbgrid1.datasource.dataset.close;
dbgrid1.datasource.dataset.open;
dbgrid1.datasource.dataset.enableControls;
 
先谢了,我try!!!
 
to LiZhongYu
也不行,我现在发现,只要能迟4秒(如用sleep(4000))以上再refresh,即
增加第一条记录时,表格可显示!
 

Similar threads

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