2012-08-06 87 views
0

我有这样的服务器方法的DataSnap服务器:现在DataSnap服务器抱怨服务器方法不存在...德尔福2010的DataSnap

function TServerMethods1.selectFalzUser(Usuario: string) : TDataSet; 

,使用TSQLServerMethod DataSnap客户机,我成功地连接到服务器在设计模式,拉服务器的方法列表...选择'selectFalzUser'...我可以成功地看到我的参数,Usuario作为输入,并输出TDataset参数...当尝试设置我的SqlServerMethod活动.. 。我得到以下错误:

Error Remote error: TServerMethods1.selectFalzUserwhereUsuario method not found in the server method list.

为什么Delph我正在将'whereUsuario'字符串附加到方法名称上?显然TServerMethods1.selectFalzUserwhereUsuario不存在。

Regards

zaguerino。

+0

TDataSet不是您可以在DataSnap远程函数调用中返回的类型。不要saludo。! – jachguate 2012-08-06 23:41:01

+0

嗨,我正在阅读鲍勃斯沃特的白皮书:“Delphi 2010 DataSnap:您的数据在哪里,你想要它”,它显示了一个服务器方法: function TServerMethods1.GetEmployees:TDataSet; 在服务器方法中返回行的正确类型是什么? Registers Zaguerinho – 2012-08-07 02:28:01

回答

0

没有看到更多的代码,很难说为什么它没有正确报告方法名称。但是,这听起来并不像你使用DataSnap那么正确。以下是我已经为几个项目做成功:

必须在DataSnap服务器类定义之后包括{$METHODINFO ON}TServerMethods类定义之前和{$METHODINFO OFF}。然后编译并运行您的DS服务器。

在客户端,添加一个TSQLConnection组件并设置其属性以连接到您的列表DS服务器。然后右键点击TSQLConnection并选择Generate DataSnap client classes。将其保存为ProxyMethods.pas,并将其包含在您的客户端项目中。然后,您可以访问ProxyMethods类来调用服务器中发布的任何TServerMethods

另外,返回TDataSet将不适用于我所描述的方法,因为TDataSet不是可编组数据类型,但OleVariant是。我在返回TClientDataSet.Data方面取得了很好的成功,然后在客户端,我可以直接将此分配给客户端TClientDataSetData属性。

+0

谢谢,我加了指令,但仍然是同样的错误。我不得不创建一个服务器方法完全符合它抱怨的名称,然后调用原来的方法名称很奇怪,它的工作,但似乎并不正确。 – 2012-08-06 22:16:03

+1

我同意,这看起来不正确。您可以修改您的问题并描述您使用(详细)创建客户端和服务器的过程。 SO上有几个DataSnap专家可以帮助识别问题。 – 2012-08-06 22:37:10

相关问题