一个烦了我很久的问题!各位进来看看啊!(50分)

  • 主题发起人 主题发起人 haifeilong
  • 开始时间 开始时间
H

haifeilong

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个三层结构的系统中,在客户端添加了5个ClientDataSet,在服务端添加了一个DatasetProvider,为5个ClientDataSet提供共同的接口,就是说一个DatasetProvider为5个ClientDataSet共享,结果提示数据出错,该怎么更正啊?(注:客户端的ClientDataSet的各项属性是手动设置的。)
在客户端中,我的代码是这样的:
ClientDataSet.Close;
ClientDataSet.CommandText:='';
ClientDataSet.CommandText:='Select * from table1 where username=:yh';
ClientDataSet.Params[0].Value:=Trim(Edit1.text);
ClientDataSet.Open;
不知各位是怎么设计三层结构的,是不是每个ClientDataSet都要添加一个DataSetProvider与之相对应啊,还是多个ClientDataSet只提供一个DataSetProvider接口啊!请各位帮帮忙,谢谢了各位。。。。。
 
多个对应一个是可以的,一一相左对要占很多内存的了,我是这么用的你可以参考一下:
三个控件ADOQuery1,DataSetProvider1,ClientDataSet1
DataSetProvider1.DataSet := ADOQuery1;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlstr);
ADOQuery1.Open;
ClientDataSet1.Data := DataSetProvider1.Data;
 
一般可以在中间层将数据集生成,然后直接返回数据集给客户端.
不管你是几个ClientDataSet.一次次取数据就OK.而且还要看是什么中间层
 
我不知道大家是怎么做的。
我以前是将多个clientdataset对应于一个dsp。但不幸的是,当我将一个clientdataset对应一个dbgrid打开一个数据集同时,再用另一个clientdataset打开另一个数据集时,这时前一个dbgrid中的数据集被关闭了。
后来只好一个cds对应一个dsp。
听课。
 
虽然可以一个对多个,但一次只能操作一个表,要同时对多个表操作的话,还是多建几条联接吧。
 
如果只是提取数据的话,中间层只用一个dsp一个qry就可以了;
如果要提交数据,建议使用一个cds对应一个dsp对应一个qry。
 
多人接受答案了。
 
后退
顶部