0

我有两个DataSnap Server通过TFDQuery's数据库。此查询位于 a via a (需要的数据集)中。此数据通过一个导出。TFDConnectionMySQLmaster/detail relationshipTDataSourceTDataSetProvider

在客户端,我有一个TDataModulewith one TSQLConnection、 oneTDSProviderConnection和 two TClientDataSet's,一个用于 the Master,另一个用于 Neested DetailviaDataSetField属性。

当我测试我的客户时,一切正常。

问题是在处理two clients相同的详细记录时,我在一个客户端中写入一个详细信息的数据在我的第二个客户端中看不到,反之亦然。simultaneously

假设我们有一个简单的账单/项目关系的场景: Bill1、Item1、OriginalData

如果我在两个客户端中读取Bill1,则两者都读取相同的数据。如果我在我的第一个客户端中将OriginalData修改为ModifiedData并执行ApplyUpdates,它工作正常,但随后我在我的第二个客户端中刷新相同的Bill1,并且仍然读取未更改的OriginalData

如果我将数据写入MasterTable一切正常,请用我的购买DetailTable它似乎从某个缓存或其他东西中获取数据。BDE我都是通过组件和数据库复制Paradox的,没有问题,但是我们需要使用FireDacMySQL

DataSnap所以,这里有一个问题...... ¿为什么在使用viaFireDac和调用刷新后,我的第二个客户端看不到写入第一个客户端中详细记录的数据MySql

我正在使用 Delphi Xe5 更新 2。

注意:Master/Detailparametrized Query,因此一次只有一个 Bill 处于活动状态。

再次为我糟糕的英语感到抱歉。

4

1 回答 1

0

通过在服务器端设置FetchOptions.DetailOptimize=FALSE来解决它。TFDConnection

当 DetailOptimize 为 true(FireDac 上的默认值)时,FireDac 仅在当前详细数据集关键字段值与主数据集关键字段值不同时刷新详细数据集。

有关更多信息,请阅读 FireDAC.Stan.Option.TFDFetchOptions.DetailOptimize

于 2014-06-25T17:37:54.003 回答