怪怪的問題,快被折磨死了(100分)

  • 主题发起人 maysally
  • 开始时间
M

maysally

Unregistered / Unconfirmed
GUEST, unregistred user!
我的DELPHI程序有一個想破頭也想不通的問題:
用戶在界面上更改一筆數據庫記錄後,在界面上提交刷新(沒有出錯)以後看到的是新的數據.
可是在後台用SQLPLUS看到這筆記錄仍然沒有改變,而且別的聯網的電腦上看到的也是沒有改變的數據,
怪事還有:更改數據的用戶關閉這個應用程序以後,數據庫後台就可以看到新的數據了,其他電腦上的用戶看到的也是新的了

我用.EDIT,然後賦新值,再APPLYUPDATES試過了,
用QUERY裡寫SQL語句UPDATE也試過了,
還做了一個STOREDPROC來進行UPDATE也是一樣.
這個TABLE的並發控制(PARALLEL DEGREE)我也設置成100了,還是沒用.

提點線索吧,建議也行!
 
请以后铁帖子用简体中文……[^][:(!][:(!][:(!]
 
你没有把事务进行提交啊!!!!
 
嗯,是个不小的问题
 
当然提交了,还刷新了,不然我还神经跑到这里来问阿?
 
post 吧,update并不代表数据修改成功
 
没有COMMIT;
 
太累了!
 
BDE Administrator -> [Configuraton] -> [System] -> [INIT] ->
LOCAL SHARE = [red]FALSE -> TRUE[/red]
 
你大概用的不是Oracle之类的C/S数据库,我记得以前有类似问题的答案,
需要调用BDE底层的函数,具体我记不清楚了,你可以在论坛上找一下。
 
我知道,但是我不认识繁体字啊![:D]
 
TO:jacklee 下面就简体的了!回答吧:)

我的DELPHI程序有一个想破头也想不通的问题:
用户在界面上更改一笔数据库记录后,在界面上提交刷新(没有出错)以后看到的是新的数据.
可是在后台用SQLPLUS看到这笔记录仍然没有改变,而且别的联网的计算机上看到的也是没有改变的数据,
怪事还有:更改数据的用户关闭这个应用程序以后,数据库后台就可以看到新的数据了,其它计算机上的用户看到的也是新的了

我用.EDIT,然后赋新值,再APPLYUPDATES试过了,
用QUERY里写SQL语句UPDATE也试过了,
还做了一个STOREDPROC来进行UPDATE也是一样.
这个TABLE的并发控制(PARALLEL DEGREE)我也设置成100了,还是没用.

提点线索吧,建议也行!

 
谈谈我得想法吧
1.每个客户都是检索一定的数据在客户端的内存中,一般的操作都在这里进行,除非有
新的检索,不信你把另一客户端关闭在打开,应该看到。在本机看到适应该的。
2.至于为什默关掉后,另外的客户看得到,我觉得是因为客户关掉后,服务端对此产生了
一个事件,对每个客户进行了刷新。
3.为什么你的后台看不到,同1,他也可以看成客户。
4。我是瞎整的。
 
我认为SnoopyChen的方法值得试一下。
 
好象没有提交啊,UPDATE不算的了,只有重新后才会保存,要适时看到效果就POST了!
 
处理方法:
DataSet.UpdateMode:=upWhereAll;
DataSet.CachedUpdates:=False;
DataSet.ApplyUpdates;
Database.ApplyUpdates(DataSet);
Database.Commit;
试一下这几个方法;实在不行就将数据集关闭再打开应该就可以了
 
大家说的各种提交的方式我都试了,snoopychen的方法也试了,还是搞不定。
而且,我们部门内部电脑上运行这个程序没有问题,都是及时提交及时看到结果。
我们电脑上装的DELPHI6.0,别的部门只装了DELPHI5.01的BDE,没有开发环境。
这是问题吗?可是别的程序没有啊!而且我这个程序也只是一个界面是这样。
 
我的那个QUERY:
QRY_TEMP.Close;
QRY_TEMP.UpdateMode:=UPWHEREALL;
QRY_TEMP.SQL.Clear;
QRY_TEMP.SQL.Add('UPDATE DEPT_APPLY SET STATUS=''Q'',ASSIGN_DATE=SYSDATE,USER_2='''+COMBO_PUR.Text+''' WHERE ID='''+APPLY_ID+'''');
//QRY_TEMP.Prepare;
QRY_TEMP.ExecSQL;
我加上QRY_TEMP.Prepare执行时就会在这一句死掉,执行不过去了,去掉就会执行(只是
后台及别的用户都看不到执行后的新数据),为什么不能PREPARE呢?这里是有问题吧?
请各位指点
 
一定是事务没提交,不然不会有这个问题
你用的是BDE.ODBC ADO???
 
顶部