Midas的两个问题(100分)

  • 主题发起人 主题发起人 canna
  • 开始时间 开始时间
C

canna

Unregistered / Unconfirmed
GUEST, unregistred user!
初学midas,有两个问题请高手指点:
1.Midas中,应用程序服务器与客户端是分开的。客户端需根据用户的选择动态
生成sql语句,访问数据库。这些sql语句如何写入应用程序服务器的Tquery中;
2.应用程序服务器的Tdataset与客户端的Tdatasource之间,都要有datasetprovider
与clientdataset连接。是否每个Tdataset都要有一个甚至更多的datasetprovider与
clientdataset连接。这样似乎效率不高。
 
李维的书上有介绍,建议先看看。
 
放一个clientdataset
clientdateset 对应服务器上的provider
写入clientdataset.CommandText
你可以在服务器端些个函数

procedure TRemote_DM.opensql(var sqlstr: WideString);
begin
with adoquerydo
begin
close;
sql.text:=sqlstr;
open;
end;
end;

你只要调用这个函数就可以了
这样就不需要clientdataset
 
对第一问题,我同意apche的说法,
第二个问题,我没有理解你的意思,能说的明白写吗?
 
第二个问题的意思是,客户端的form1如需浏览服务器端的table1的数据,
就需有一套datasource->clientdata->dcomconnection->datapriovider->dataset;
如form2也需浏览服务器端的table1的数据,就同样需有这样一套连接,是吗?
 
当然不是。
TDataSetProvider的Options属性中有一项为ptAllowCommandText,如果设为TRUE,
那么在客户端可以用SQL来动态地获取数据:
clientdataset1.close;
clientdataset1.commandtext:='select * from table2';
clientdataset1.open;
就行了。
 
第一个问题,同意楼上。
第二个问题,要根据你的实际情况,如果你的TdataSet数据要传递给客户
端,就要用Tdatasetprovider或者自己写程序封装数据传递,Tdatasetprovider
的多少并不影响效率!
 
我也想明白
 
第一个问题同意apache的。
对第二个问题,无论涉及多少个表查询,服务器端都只用一个TADOQuery与TdatasetProvider
就可实现,但客户端须多过Tclientdataset。
 
多人接受答案了。
 
后退
顶部