0

我有一个带有这样的服务器方法的 DataSnap 服务器:

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

现在,在使用 TSQLServerMethod 的 DataSnap 客户端上,我在设计模式下成功连接到服务器,拉取服务器的方法列表...选择“selectFalzUser”...我可以成功看到我的参数,Usuario 作为输入和输出 TDataset参数...当尝试将我的 SqlServerMethod 设置为活动时...我收到以下错误:

错误 远程错误:在服务器方法列表中找不到 TServerMethods1.selectFalzUserwhereUsuario 方法。

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

问候

萨盖里诺。

4

1 回答 1

0

如果没有看到更多代码,很难说为什么它没有正确报告方法名称。但是,听起来您使用 DataSnap 并不完全正确。以下是我为几个项目成功完成的工作:

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

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

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

于 2012-08-06T21:07:06.207 回答