李维先生的《Delphi5.X分布式多层应用系统篇》更新数据原理 一节Page 3-11(100分)

  • 主题发起人 主题发起人 springwater
  • 开始时间 开始时间
S

springwater

Unregistered / Unconfirmed
GUEST, unregistred user!
将应用程序服务器端的远程模块中的Query2.ResolveToDataSet设为True;组件间
连接关系如下:
IBLocal<--Database1<--Query2<--sgUpdataDataSetProvider(TDataSetProvider)

在客户端应用程序中用ClientDataSet2连接sgUpdataDataSetProvider,
执行程序:"ClientDataSet2.ApplyUpdates(0);" ,则sgUpdataDataSetProvider
通过它连接的Query2数据集更新数据(而不是用自动产生的SQL更新数据)。书上
为证明这一点:在应用程序服务器窗口的Statusbar上显示:Query2的“BeforePost”和“AfterPost”分别触发

了。

但我调试,考虑了足足半天,书上讲到的我都做到了,可是就是Statusbar上没
显示Query2的“BeforePost”和“AfterPost”被触发了的信息。而且我还证明
我在执行了"ClientDataSet2.ApplyUpdates(0);" 之后客户端所做的数据更新
只更新在了客户端窗口中的ClientDataSet中,并没真正用Post方法更新到
IBLocal数据库中,所以Query2的Post方法并没有触发,自然Statusbar上不会
显示信息了,可是按书上说应该会触发Query2的Post方法并在Statusbar上显示
信息的。

我想问:在各个所用组件关系设定正确的前提下,在Query2.ResolveToDataSet设
为True后,在客户端应用程序中并执行程序"ClientDataSet2.ApplyUpdates(0);"
,则客户端应用程序中数据的更新就可以实现IBLocal数据库的更新吗?但我总觉
得还有哪一步关键的事没做,不知是什么(书上没有讲明的)?谢谢!
 
书上不是说了为了证明agUpdateDataSetProvider的确会通过query2来更新数据,
为query2的beforepos和afterpost定义代码。
你用单步调试一步步看,看到底有没有执行。
 
我看是不是将Query2.Requestlive设为True
 
后退
顶部