我有一个DataSnap Server,其服务器方法如下:
function TServerMethods1.selectFalzUser(Usuario: string) : TDataSet;
现在,在使用TSQLServerMethod的DataSnap客户端上,我成功连接到设计模式的服务器,拉出服务器的方法列表...选择'selectFalzUser'...我可以成功地看到我的参数,Usuario都是INput,输出TDataset Param ...当试图设置我的SqlServerMethod Active ...时出现以下错误:
错误远程错误:TServerMethods1.selectFalzUserwhereUsuario方法 在服务器方法列表中找不到。
为什么Delphi会将'whereUsuario'字符串附加到方法名称?显然TServerMethods1.selectFalzUserwhereUsuario不存在。
此致
zaguerino。
答案 0 :(得分:0)
如果没有看到更多代码,很难说为什么它没有正确报告方法名称。但是,听起来你并没有使用DataSnap。以下是我为几个项目成功完成的工作:
您必须在{$METHODINFO ON}
类定义之前包含TServerMethods
,在DataSnap服务器中的类定义之后包含{$METHODINFO OFF}
。然后编译并运行DS服务器。
在客户端,添加TSQLConnection
组件并设置其属性以连接到列表DS服务器。然后右键点击TSQLConnection
并选择Generate DataSnap client classes
。将其保存为ProxyMethods.pas
之类的内容并将其包含在客户端项目中。然后,您可以访问ProxyMethods
类来调用服务器中的任何已发布的TServerMethods
。
此外,返回TDataSet
将无法使用我所描述的方法,因为TDataSet
不是可编组的数据类型,但OleVariant是。返回TClientDataSet.Data
后,我取得了很好的成功,然后在客户端,我可以直接为客户端Data
分配TClientDataSet
属性。