gpt4 book ai didi

mysql - 通过 FireDac 和 MySql 的主/详细数据快照 ¿为什么在一个客户端中写入详细记录的数据在第二个客户端中看不到?

转载 作者:行者123 更新时间:2023-11-30 00:07:43 25 4
gpt4 key购买 nike

我有一个DataSnap Server有两个TFDQuery's通过TFDConnectionMySQL数据库。此查询位于 master/detail relationship 中通过 TDataSource (所需的数据集)。该数据通过 TDataSetProvider 导出。

在客户端,我有一个 TDataModule与一个TSQLConnection , 一 TDSProviderConnection和两个TClientDataSet's ,其中一个为Master另一个为Neested Detail通过DataSetField属性。

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

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

假设我们有一个简单的账单/项目关系的场景:账单 1、项目 1、原始数据

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

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

所以,问题是... ¿为什么在使用 DataSnap 调用刷新后,我的第二个客户端看不到写入第一个客户端中的详细记录的数据。通过FireDacMySql

我正在使用 Delphi Xe5 update 2。

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

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

最佳答案

通过在服务器端设置TFDConnectionFetchOptions.DetailOptimize=FALSE解决了这个问题。

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

欲了解更多信息,请阅读 FireDAC.Stan.Option.TFDFetchOptions.DetailOptimize

关于mysql - 通过 FireDac 和 MySql 的主/详细数据快照 ¿为什么在一个客户端中写入详细记录的数据在第二个客户端中看不到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24376846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com