【问题标题】:Datasnap Delphi XE5 Server side dynamic sqlDatasnap Delphi XE5 Server端动态sql
【发布时间】:2015-02-13 07:16:16
【问题描述】:

我在 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;');

在主窗体上,我有一个 SQL 连接、DSProvider 连接和一个客户端数据集。当我尝试使用上述代码为客户端设置提供程序名称时,我收到错误“远程错误:提供程序未导出:DSP1”

【问题讨论】:

    标签: sql-server delphi delphi-xe5 datasnap


    【解决方案1】:

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

    "要使远程数据模块能够将调用传递给提供者,提供者的Exported 属性必须为True,并且其Owner 属性必须指定远程数据模块。 "

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

    您的提供商没有所有者。

    【讨论】:

    • 您的回答非常有帮助,它帮助我找到了正确的方向。所有者是我的问题之一,但主要问题是客户端的 DSProvider 连接没有使用与客户端模块 DBX 连接相同的 DBX 连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 2012-09-03
    • 1970-01-01
    相关资源
    最近更新 更多