三层的问题!急急急急!!!!虽然简单但有技巧! (100分)

  • 主题发起人 主题发起人 无忧鱼
  • 开始时间 开始时间

无忧鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
1。在三层系统中,我为了维护一个无状态对象,将fetchondeman设为false
并将clientdataset1(它联接了一个表A)的packetrecorders设为1000,
此时我又有另一个clientdataset2控件联接另一个表B,现在要求将A与B做一个
主从表关联,B为主表,A为子表(比如用这两个表的NO字段做关联),
可是如果当clientdataset2中NO字段值不在clientdataset1的1000条记录内怎么办,
岂不是出现不能正常显示所关联的子表内容.
请问各位高手是怎么做这种关联的?
2。temp.locate('workno;name',vararrayof([trim(value1.text),trim(value2.text)]),
[loPartialKey,loCaseInsensitive])
在表中明明符合条件的记录,可是为什么查询不到?不要说是大小写问题,我都试
过了,大小写绝对没问题!
 
//关注此题,
 
'workno,name' 要用分号隔开各个列,比如 'workno;name'
 
那就把PacketRecords设置为-1罗
 
设为-1问题是可以解决,可是将给网络造成负担啊,如果有10万条记录怎么办?
所以我不想将它设为-1
 
我认为可能是你的主从表设置问题.你是不是用的TClientDateSetr 的 MasterField 属性?
我以前这样用出过同样的问题.把主从表设到服务器端就没事了.
 
假如有10万条纪录,你取1000条没什么意义吧,
在appsvr层就要用条件选择所需的最少的纪录了
 
既然你知道A表作从表将引起数据不全的问题,那就不应该试图在客户端实现这种主/从表。
而应该在中间件中使用其它的,如一个TADODataSet,接受某些变量,
生成数据到TDataSetProvider,然后客户端从它取得数据。
如果数据较多,可以考虑分段获取。
 
此问题的主从表关系应该在中间层设定,然后只需设定主表的packetrecorders数量,
从表记录自动会跟随主表记录被抓到客户端。
 
你最好是在数据库中建立好视图,用外联,要不就在服务器端做好主从关系,
这里边是有一些技巧,你找一下我以前的问题,有过答案的。
 
同意使用中间层,既然为了简化客户端还是在中间层实现主/从关系为好,
把客户的查询条件No返回给中间层,然后实现对主表B查询,
刷新客户端数据集B,A数据集也会自动返回。
 
1.你在应用层把关联建好,他就实现主从的纪录,
然后你在客户层的packetrecorders设为1000,ok
 
多人接受答案了。
 
后退
顶部