从DataSnap客户端更改FireDAC查询SQL字符串

我已经在Delphi XE7中建立了一个连接到DataSnap Server的客户端。 我需要将在客户端上创建的SQL字符串发送到服务器,以针对Firebird数据库执行。 我正在使用FireDAC,但是如果使用DB Express,我会得到类似的结果。

我在服务器上有TFDPhysFBDriverLink - > TFDConnection - > TFDQuery - > TDataSetProvider。

我在客户端上有TSQLConnection - > TDSProviderConnection - > TClientDataSet - > TDataSource - > DBGrid

TFDQuery似乎在设计时需要一个SQL.Text值。 (例如,从Cust_Master中选择*)我可以将SQL字符串(例如,从Proj_Master中选择*)发送回服务器并将其加载到TFDQuery中,并且如果在更改SQL.Text之前和之后检查受影响的行,获取为客户返回的正确行数和项目查询。 问题是,在客户端,我只得到设计时间SQL的结果,即客户,而不是我发送给服务器的SQL,即项目显示在网格中。 在将SQL发送到服务器之后,我会调用ClientDataSet.Refresh。

我需要能够将各种SQL查询发送回服务器,我不能在设计时定义它们。 我是否使用正确的组件来实现这一目标?


您必须关闭并重新打开ClientDataSet。 一个简单的刷新不会。


您需要将DSServer的生命周期设置为Invocation,或者直接在ServerMethods的类函数中创建FBQuery。 我推荐第二个。


检查TDataSetProvider->选项 - > poAllowCommandText被选中

链接地址: http://www.djcxy.com/p/64683.html

上一篇: Change a FireDAC query SQL string from DataSnap client

下一篇: How to release DataSnap memory once connections are closed?