关于DataSnap 的一个问题?

lpq21314-08 2014-09-14 06:43:22
我用Delphi 2010 下的DataSnap 进行服务器端的编程,在服务端需要返回一个值,我是用以下方式来返回的:
放了一个 TSQLConnection,一个 TSQLDataSet,一个TDataSetProvider ,
然后就是在 ServerMethod 里定义了一个方法,代码如下:
Try
SQLConnection1.Close;
SQLDataSet1.Active:=false;
Finally
End;
Try
SQLDataSet1.commandText:='select '+''''+'TestValue'+''''+' as RetValue ';
SQLDataSet1.Open;
Finally
End;

然后在客户端用clientdataset 获取返回的数据集,打开数据集时提示没有定义SQL语句,就是说如果服务端的SQL语句不能自己拼凑,必须是数据库里有的表和字段才可以,我的理解是这样的,请问一下,如果要达到这个效果,请问该如何解决?
(其实我就是想把服务端的 TestValue 这个值返回给客户端就行了)
...全文
119 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lpq21314-08 2014-09-15
  • 打赏
  • 举报
回复
我就是不太清楚客户端如何调用这个方法,请指点?
看那山瞧那水 2014-09-15
  • 打赏
  • 举报
回复
服务端定义一个方法返回值的 function GetValue(const SQLStr:string):variant; SQLDataSet1.commandText:=SQLStr; SQLDataSet1.Open; result:=SQLDataSet1.fieldvalues[0]; 客户端直接调用这个方法
lyhoo163 2014-09-15
  • 打赏
  • 举报
回复
要在服务器中,定义一个方法,该方法使用参数SQLStr,返回值(数据集、字符串、OleVariant) 参考代码:
function TTServer.DataSetProvider1DataRequest(Sender: TObject;
  Input: OleVariant): OleVariant;
begin
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Text:=Input;
  ADOQuery1.open;
end;

看那山瞧那水 2014-09-15
  • 打赏
  • 举报
回复
引用 2 楼 u014653768 的回复:
我就是不太清楚客户端如何调用这个方法,请指点?
服务端写好后,运行服务端程序。 客户端放一个SQLConnection 右键点击,点"Generate DataSnap Client Classes",就会产生一个客户端用的服务端代理类 看看DataSnap的演示教程
reverzeng 2014-09-15
  • 打赏
  • 举报
回复
学习DATASNAP中...

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧