多层开发中ClientDataSet与DatasetProvider之间问题(54分)

  • 主题发起人 主题发起人 awfigsk
  • 开始时间 开始时间
A

awfigsk

Unregistered / Unconfirmed
GUEST, unregistred user!
在多层开发中,应用层中的DatasetProvider控件是否要与客户层的ClientDataset控件一一对应?也就是在客户端有五个ClientDataSet控件,则应用层中也要有五个DataSetProvider控件?
我在程序遇到了一个问题,当多个ClientDataSet连到同一个Datasetprovider控件时,在clientDataset的fielddefs属性中会出现多个不同表中的字段。所以才会有上面的想法,还请各位高手大侠们指点,谢谢!
 
这个应该没有规定的
 
但我遇到的问题是不是多个ClientDataSet控件连到同一个DataSetProvider这样引起来的呢?
 
多层情况下,要通过用时切换来实现的,而不是在设计时刻先把连接设置好
具体是取得数据后
clientDataSet.data:=DataSetPriovder.date
 
不是,
可能你的DataSetProvider数据集从多个表中取得数据
还有种可能是主从表
 
哦,我上面的问题问错了。应该是如下这种情况:
Clientdataset1.commandtext:='select * from 表1'
ClientDataset1.open;
clientDataset1.close;
Clientdataset1.commandtext:='select * from 表2'
ClientDataset1.open;
但在第二次执行后,第一次执行结果的字段也还存在ClientDataset字段表。这是为何?
 
Clientdataset1.commandtext:='select * from 表1'
ClientDataset1.open;
clientDataset1.close;
ClientDataSet1.ClearFields
Clientdataset1.commandtext:='select * from 表2'
ClientDataset1.open;
这样试看行不行
 
奇怪了,我后来按后那种写法再试,又可以了!问题出在哪还是没有找到。
我以前也试过lsql这种方法,还用过ClientDataSet1.FieldDefs.Clear;当时都不行。
昨天晚上再试,又可以了!真是晕![?]
十分感谢二位的指点!!
 
后退
顶部