Datasnap Delphi XE5 服务器端动态 sql

Datasnap Delphi XE5 Server side dynamic sql

我在 delphi Xe5 中遇到了 datasnap 的小问题。

我需要在服务器端运行动态查询。我在服务器方法上使用 ADO 连接。

服务器程序:

var
qryNew: TADOQuery;
dspNew: TDatasetProvider;
begin
    qryNew := TADOQuery.Create(nil);
    qryNew.Connection := Adoconnection1;
    qryNew.SQL.Text := SQL;
    qryNew.Name := 'qry'+IntToStr(1);
    dspNew := TDatasetProvider.Create(nil);
    dspNew.Name := 'dsp'+IntToStr(1);
    dspNew.Dataset := qryNew;
    qryNew.Open;
    Result := dspNew.Name;
end;

客户端程序:

ClientDataset1.ProviderName :=clientmodule3.ServerMethods1Client.GetDataForClient('Select top 10 * from ODBC.trans_day_2009_1111;');

在主窗体上,我有一个 SQLconnection、DSProvider 连接和一个客户端数据集。当我尝试使用上述代码为客户端设置提供商名称时,出现错误 "Remote error: Provider not exported : DSP1"

通常(并非总是),如果您花时间理解错误消息,它们会很有帮助。如果它说提供程序未导出,您应该检查它为什么不导出 - 即文档说:

"To enable the remote data module to pass calls to the provider, the provider's Exported property must be True, and its Owner property must specify the remote data module."

http://docwiki.embarcadero.com/Libraries/XE5/en/Datasnap.Provider.TDataSetProvider

您的提供商没有所有者。