我在 Delphi XE7 中设置了一个连接到 DataSnap 服务器的客户端。我需要将在客户端上创建的 SQL 字符串发送到服务器以针对 Firebird DB 执行。我正在使用 FireDAC,但如果我使用 DB Express,我会得到类似的结果。
我在服务器上有 TFDPhysFBDriverLink -> TFDConnection -> TFDQuery -> TDataSetProvider。
我在客户端上有 TSQLConnection -> TDSProviderConnection -> TClientDataSet -> TDataSource -> DBGrid
TFDQuery 在设计时似乎需要一个 SQL.Text 值。(例如 select * from Cust_Master)我可以将 SQL 字符串(例如 select * from Proj_Master)很好地发送回服务器并将其加载到 TFDQuery 中,如果我在更改 SQL.Text 之前和之后检查受影响的行,我获取为客户和项目查询返回的正确行数。问题是,在客户端,我只得到设计时 SQL 即客户的结果,而不是我发送到服务器的 SQL 即在网格中显示的项目。在将 SQL 发送到服务器后,我确实调用了 ClientDataSet.Refresh。
我需要能够将各种 SQL 查询发送回服务器,我不能在设计时将它们全部定义。我是否使用正确的组件来实现这一目标?