有两个不同的程序,分别用ADO对同一个数据库进行操作。
首先程序一给数据库中某记录重新更新了一次内容,然后程序2再对数据库进行查询,但此时查询到的内容还是程序1把数据更新前的内容。除非程序2的那个查询动作是在程序1更新数据库后几秒钟后再查询,才能得到刷新后的结果,这显然是不适用的。
此问题困扰我已久,一直未能解决。在网上也有很多各式各样类似的问题。解决办法比如先CLOSE,再OPEN,或REFRESH,或反复定时刷新等等,我都试过但都不能从根本解决,请教哪位高人有解决办法?(最好你也做一个小的例子来试试再说,当然也可做成同一程序的两个不同窗体上的ADO控件对同一数据库进行操作的,结果也一样。)
首先程序一给数据库中某记录重新更新了一次内容,然后程序2再对数据库进行查询,但此时查询到的内容还是程序1把数据更新前的内容。除非程序2的那个查询动作是在程序1更新数据库后几秒钟后再查询,才能得到刷新后的结果,这显然是不适用的。
此问题困扰我已久,一直未能解决。在网上也有很多各式各样类似的问题。解决办法比如先CLOSE,再OPEN,或REFRESH,或反复定时刷新等等,我都试过但都不能从根本解决,请教哪位高人有解决办法?(最好你也做一个小的例子来试试再说,当然也可做成同一程序的两个不同窗体上的ADO控件对同一数据库进行操作的,结果也一样。)
解决方案 »
- 删除文件到回收站,出现这样的现象,真是太惊奇了?!
- 调用dll时,关闭程序出错!
- 急招delphi软件工程师 工作地点哈尔滨
- 找一款打印機﹕針式能自動進紙打印A4紙﹐速度和EPSON1600K差不多啊。激光打印成本太貴﹐用不起啊
- Socket.SendBuf带来的问题,已解决,高兴散分
- 在delphi下如何将一简体字符串转换为繁体!高手帮忙!
- 在线求救:急急急!!!如何在程序中屏蔽掉Alt+F4?立即给分
- 那里有DELPHI的源程序下载的阿?
- 关于类的继承
- 一个关于FR对JPG图片支持的问题。谁用过,进来看看。
- 请问如何用delphi实现 del *.* 功能 ?
- 请问这样的情况应该如何批量修改数据?
http://expert.csdn.net/Expert/topic/2080/2080420.xml?temp=.1962549http://expert.csdn.net/Expert/topic/1882/1882200.xml?temp=.6502954楼主的问题是因为使用ADO对数据库的操作其结构还是在本机缓冲区里,有办法的,现在我一时想不起来!
update tablename。whereX
select * from tablename。whereX
可以看到修改后的结果。
把它换成两个函数,每一函数有一功能,我也能看到修改后的结果,不知楼主怎么用,能说详细点?
建立一个工程,有两个窗体FORM1与FORM2,
FORM1上有一个ADOCONNECTION1,一个ADOQUERY1,一个BUTTON1,一个LABEL1,按BUTTON1时有
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from 表1');
open;
first;
edit;
if fieldbyname('text').asstring='aaa' then
fieldbyname('text').asstring:='bbb'
else
fieldbyname('text').asstring:='aaa';
label1.Caption:=fieldbyname('text').asstring;
post;
end;FORM2上有一个ADOCONNECTION2,一个ADOQUERY2,一个BUTTON2,一个LABEL2,按BUTTON2时有
with adoquery2 do
begin
close;
sql.clear;
sql.add('select * from 表1');
open; first;
label2.Caption:=fieldbyname('text').asstring;
end;在FORM1上按BUTTON1后,表1中字段TEXT的值若原来为'aaa'的,就变为'bbb',若原来为'bbb'的就变为'aaa',且在LABEL1上显示出来。 按理说,之后在FORM2上按BUTTON2后,LABEL2会显示已修改后的数据,但事实并非如此。除了第一次进行前述操作(先按BUTTON1,再按BUTTON2)能马上从LABEL2上看到刷新后的数据外,往后的操作都是这样,按完BUTTON1后两三秒种内(有时会更长,且时间不定),无论你怎么按BUTTON2,从LABEL2上看到的都是按BUTTON1前数据库中的数据,只有到足够长的时间后,按BUTTON2,才能从LABEL2上看到刷新后的结果。
相信这个问题很多人都会碰到。期待问题解决。