在采用ADO作三层时,数据不能保存到数据服务器,请高手们帮忙!奉上仅有的150分(150分)

  • 主题发起人 主题发起人 jeffer.liu
  • 开始时间 开始时间
J

jeffer.liu

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个系统中采用ADO的三层结构,客户端的数据在使用了ApplyUpdates后不能更新到数据服务器中,这是为何?
请高手们帮忙!
(应用服务器全部使用adoqry)
(DCOM联接)
 
你的数据是否正确?
有的栏位判断是否相符?
 
我可以确认录入的数据肯定正确。栏位也没问题。
很奇怪的是:刚设置完成时数据能更新到服务器中,不知过了多久后,数据无论如何都无法保存。
当然单表操作还是可以,只有主从表操作才出这个问题(无法保存)。
 
你的主从表结构和更新数据贴出来看看,这样子不知道有谁能说清楚
 
我以前也碰上过这样的问题。
 
我的主从表如下:
应用服务器端:主表:adoqry_Delive/dsp_Delive
SQL:SELECT * FROM T_DELIVER WHERE INT_STYLE=1 ORDER BY DEC_BILLNO
从表:adoqry_Delive_D/dsp_Delive_d
SQL:Select * From T_Deliver_D Where dec_Billno=:dec_Billno Order By int_row
客户端:主表:cds_Delive/ds_Delive
从表:cds_Delive_D
DataSource:ds_Delive
MasterFields:dec_Billno->dec_Billno
我在客户端运行如下:
cds_Delive.ApplyUpdates(-1);
cds_Delive_D.ApplyUpdates(-1);
在应用服务器端的dsp_Delive_D的BeforeUpdateRecord()中写了如下:
with AppDBC.ADOConnectiondo
begin
begin
Trans;
try
CommitTrans ;
except
RollbackTrans;
end;
end;
,到目前还不能保存。望各位高手帮我看看。在此先谢过。
 
你在AfterUpdateRecord中提交了吗?
有一种方法能够使用一个DataSetProvider就能封装主、从表的数据,忘了怎么做了。
好像是维系统篇上讲到的,你可以查一查。
 
不要这样作主从表更新。
你可以在服务端作成主从关联,使用一个TDatasetProvider就可以了。这样的话事务处理就
不用你自己处理,简单多了。
 
我最近采用巢状数据库形式,其主表将从表封装成字段形式,解是解决了更新的问题,但这样
数据量比较大,特别是子表的数据量比较大,不好处理。
 
所以一般不采用Delphi的主从关联来处理主从关系。因为子表的TClientdataset.open时将
一次性把所有子表记录取过来。这样如果子表记录有上千条的话用户是无法忍受的。所以
一般都是自己处理主从关系:两个独立的TClientDataset分别连接TDatasetProvider,主
TClientDataset的AfterScroll事件中根据当前主记录打开子TClientDataset,取得子表的
相应记录。这样就算是当前主记录下的子记录再多,也可由TClientDataset.PacketRecords
参数控制取记录的时间。
 
to qiu_peking,:
但是这样从表得ClientDataSet中只能保存在最近得AfterScroll中所取回得数据,因此这种方法对浏览是有效的,但需要更新时就无法如此应用了,
最好是取得与主表数据有关的所有从表数据。
用巢状数据也不可取,因为与主表无关的数据也会被取回。
 
我在用BCB5做多层结构系统时,我在Server端加入了一个取得服务器IP地址的方法:GetServerIP它的参数是vIP:Variant *,IN方式,并在服务端实现了这个方法,
加入的代码如下:
*vIP="192.168.0.01";最后我注册成功。
可是在我开发客户端程序时,我用TSocketConnection
当取得它的服务时我是这样做的:
Variant* vip;
SocketConnection1->AppServer.GetServerIP(vip);
Edit1->Tex=vip;
可 是我在运行程序时出错,没有编译通过。
它说getserverIP不是variant的成员
getserverIP is not a memober of variant
请问?
我该如何去调用这个方法呢?
请各位大侠多多指教?
小生的QQ:65466700(24小时在线恭候)
MAIL: alongsun@sina.com
 
后退
顶部