如何用ClientDataSet传递参数?(15分)

  • 主题发起人 主题发起人 ggg
  • 开始时间 开始时间
G

ggg

Unregistered / Unconfirmed
GUEST, unregistred user!

如何用ClientDataSet传递参数?就象Query控件一样。
 
ClientDataset1.Close;
ClientDataset1.Params.ParamByName('Param1').AsInteger:=...;
ClientDataset1.Open;
 
我这样作不行,望高手解答:
try
mainform.ClientDataSet2.Close;
mainform.ClientDataSet2.Provider.DataRequest(sql1+sql2+sql3+sql4+sql6+sql7+sql8+sql9);
mainform.ClientDataSet2.Params.ParamByName('FileTime').AsDateTime:=strtodatetime(trim(edit12.Text));
mainform.ClientDataSet2.Params.ParamByName('MaterialContent').DataType:=ftblob;
mainform.ClientDataSet2.Params.ParamByName('MaterialContent').LoadFromFile(trim(edit13.Text),ftblob);
mainform.ClientDataSet2.Open;
except
exit;
end;
 
你找下demo下midas 目录,有个paramXXXX
没delphi了,自己查下。
 
我用CLIENTDATASET向ADO控件传STRING型参数时,若值为‘’,老出错。
 
GGG不知你有没有通过clientdataset的fetchparam获得参数。
获得参数后的操作与TQUERY一样。
 
我用Tclientdataset删除记录时发现问题.
即当我将服务器的中间层的Query控件的Requestlive属性设为true侧不能
删除记录设为false侧不能修改添加记录.
try
ClientDataSet4.close;
ClientDataSet4.Provider.DataRequest('delete table where mid=123');
clientdataset4.Open;
except
exit;
end;
 
ggg:
1、你的CLIENTDATASET先要用FACTHPARAMS获得参数。
2、你的删除动作最好用CLIENTDATASET,在客户端用这样的SQL语句不好。
3、你的中间层不就没有什么作用了吗?请先理解中间层的强大是指什么。
4、这仅是我个人的看法,仅供参考.
 
如果使用D5的话,ClientDataSet.DataRequest已经是过时的啦,可以直接使用
ClientDataSet.CommandText ;='delete table where name='''+edit1.text+'''';
另外删除动作可以在任何一层,无论是ClientDataSet或者应用程序服务器中,其实,说
到底,clientDataset发生的SQL语句也是通过服务器来完成的,而且,相对来说,简单的
SQL语句使用ClientDataset来得更有效率。
ggg,如果你想完成ID:297375中的功能,你完全可以在应用程序服务器中的数据库控件
(如TQuery的SQL)中书写SQL 语句,(delete table where name=:name),而在客户端使用:
ClientDataset.FetchParams;
ClientDataSet.Params.ParamByName('name').AsString := Edit1.Text;
ClientDataSet.Execute;即可
 
接受答案了.
 
为何不能这样使用参数.
就象Query控件一样.
clientdataset1.Close;
clientdataset1.Provider.DataRequest('select * from material where mid=:var1');
clientdataset1.Params.ParamByName.AsInteger:=3;
clientdataset1.Open;
 
后退
顶部