不是这个问题啊,即便我再加上一条语句:
IBSupplyQuery.Close;
IBSupplyQuery.Open;
数据还是老样子,没有更新啊,其实也就是,读的记录一直都是本地的Cache。
IBSupplyQuery.Close;
IBSupplyQuery.Open;
数据还是老样子,没有更新啊,其实也就是,读的记录一直都是本地的Cache。
解决方案 »
- 翻译并修改了1篇DelphiX(delphi directX控件)的水纹效果源码,如有漏洞,欢迎指教
- 又再遇到一个问题?
- 那位高手能提供modelmaker6.2如何使用?最好能提供一個項目的實際例子,着急!!非常感謝
- 各位高手请帮帮忙!后台FTP程序如何实现?急!急!
- 簡繁體轉換
- delphi连接数据库的方式有多少种?
- 开心吗?我用VC一年多了,现想转行delphi。
- 关于代理AGENT编程问题,高手进,分数给。
- vcshcn(黑色的星星).领分
- TServerSocket等怎样传递图片?
- 关于FileRead(var buff........)的一些问题...>>>>>>>>>
- 在ADOQuery上如何使用代码添加一个字段?
在TSupplyForm.FormShow中写:
IBSupplyQuery.Close;
IBSupplyQuery.Open;
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
—————————————————————————————————
说什么updatesql为空。
你是指在第一实例Commit的时候加这句,还是在另外一个实例打开窗口的时候加?
Can not perform operation on a closed dataset
语句如下:
if ShowModal=mrOK then
begin
with IBUpdateQuery do
begin
ParamByName('iGHDWSX').AsInteger:=SX;
ParamByName('iGHDWBH').AsString:=eGHDWBH.Text;
ParamByName('iGHDWMC').AsString:=eGHDWMC.Text;
ParamByName('iSZD').AsString:=eSZD.Text;
ParamByName('iBZ').AsString:=eBZ.Text;
//Prepare;
ExecSQL;
//UnPrepare;
Transaction.Commit();
Refresh;
end;
end;
现在的问题,不是第一个程序(暂且称之为AppA)的更新动作没有起作用,这句语句执行之后,数据库中已经被更新了。
问题在于,第二个程序(称之为AppB)的IBQuery读到的记录集,仍然是AppB启动时,从数据库那边得到的缓存,并没有真正到服务器端去读,如果,他去读了,那么结果肯定是正确的啦~~~
语句如下:
UPDATE SUPPLY SET
GHDWBH=:IGHDWBH,GHDWMC=:IGHDWMC,SZD=:ISZD,BZ=:IBZ
WHERE GHDWSX=:IGHDWSX;
将Query.autofrech:= false;//close open后就应该可以了;
给它一定的绶存;
再者,你也可以用
insert语句,这样的话,它每一执行就提交了;
那个属性?CacheUpdates?还是BufferChunk?
CacheUpdates设置为False啦,
BufferChunk,这个值好像有关,他不能被设置为0,我设置其为1(默认1000)
begin
ParamByName('iGHDWSX').AsInteger:=SX;
ParamByName('iGHDWBH').AsString:=eGHDWBH.Text;
ParamByName('iGHDWMC').AsString:=eGHDWMC.Text;
ParamByName('iSZD').AsString:=eSZD.Text;
ParamByName('iBZ').AsString:=eBZ.Text;
//Prepare;
ExecSQL;
-》
sql-insert ..values(...)//不用你去fresh
在IBQuery打开记录集的时候,先把数据库给Close;Open一下~~~
我一试,确实可以,但是,这样子,实在恐怖啊,变得很慢~~~
不过,程序还是显得很慢~~~楼上的老兄,你的方法好像比较烦啊~~