想用ADO了,但很多事要解决,这是其中一件。想看就看看吧。(200分)

  • 主题发起人 主题发起人 guojun
  • 开始时间 开始时间
G

guojun

Unregistered / Unconfirmed
GUEST, unregistred user!
在传统的BDE程序中,使用Midas时,出于特殊的用途,有时这
样做:
TQuery<---TProvider <------> TClientDataSet
在提交数据时,在TProvider的OnUpdateData事件处理完所有的
提交,同时在TQuery的onUpdateRecord事件如此
UpdateAction := uaApplied;
从而不让Delphi自己提交。
但在ADO中如何使用这种机制?

左看右看,上看下看。我看不懂用ADO应该怎么做。
给实例的,分多多。
灌水的,提前的,也有分。
 
还没学到MIDAS,看看
 
关注中。。。。
 
TProvider也可以和adoquery连把,我想的没试过
 
建议你看看李维的那本ADO/MTS/COM+,里面有详细讲到怎么用ADO.书中有光盘,光盘中有源码,
呵呵...
 
不太懂你的意思。
是不是这样:要求让Delphi或是连接的数据来更新数据?
TDataSetProvider有一个ResolveToDataset属性,设为TRUE可以达到你上述的要求。
 
呵呵,李维的书是去年年底买的,可一直没时间看!
 
买书不看,不如买红薯
 
说得是,100块钱,可以买多少红薯啊。真是悔之不急!
 
TDatasetProvider.ResolveToDataset:=false;这样的话你就不用在
ADO中自己处理更新了。但是你必须在TDatasetProvider中自己写更新
语句,因为这时TDatasetProvider连接的不是TBDEDataset子类控件,
即使TDatasetProvider.ResolveToDataset:=false依然要由ADO来更新。
 
qiu_peking:
能再说详细点吗?
在TDatasetProvider的什么地方写更新语句。
另:TDatasetProvider.ResolveToDataset 设为True与False都没响应,怎么回事?
 
TDatasetProvider.ResolveToDataset:=false;这样的话你就不用在
ADO中自己处理更新了。但是你必须在TDatasetProvider中自己写更新
语句,如果你想用ADO自己来更新,ADO就可以自己处理了!
 
在试过一遍又一遍之后………………
自己想到了一招,奇怪的是以前从没这样想过呢?
这招合不合理呢?
procedure TForm1.DataSetProvider1UpdateData(Sender: TObject;
DataSet: TClientDataSet);
begin
////////////////
//自己做更新。//
////////////////
DataSet.EmptyDataSet;
end;

我发现,这是从命根子下了手,无论如何,ADO也好BDE也好,没了数据,还更新啥!
试验通过,结论不敢现在就下,没找到理论依据说这种用法是对的。
大家再找论点来支持吧!
 
对的,我的很多数据更新就是这样在TDatasetProvider处理的。
在BeforeUpdateRecord事件中处理更加方便,自己处理更新后只要设置Applied:=true
就可以了。
 
同意qiu_peking的观点
 
to guojun:
你注意到本栏目的题目了吗?--------MIDAS / DCOM
MIDAS 和 DCOM 是borland支持 三层结构的两种解决方案。
所以说他们是并列的关系。
以为dcom使用的ado 所以它是将来的发展方向。好处很多,例如:mts.
不太好的是如果用dcom 则服务器端程序必须始终开着。
我也做过mts 的程序,现在用ado .还不太熟练,
不过如果你有时间看看李维的书,应该问题不大。
 
多人接受答案了。
 
后退
顶部