首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi -在DataModule上打开的查询使AutoCommit无效?带有10.2 Toyko的奇怪bug

Delphi -在DataModule上打开的查询使AutoCommit无效?带有10.2 Toyko的奇怪bug
EN

Stack Overflow用户
提问于 2017-10-05 08:01:04
回答 2查看 331关注 0票数 1

我有一个带有FDQuery的数据模,所有设置都是如何设置的,并且在数据模的'OnCreate‘事件中打开它。此数据模式以另一种形式链接,其中包含其他查询、数据集、表和导航器。

我以前用过德尔菲XE8,一切都很好。

现在我正在使用Delphi10.2东京,与一个奇怪的bug做斗争:

(我声明用于所有查询的FDConnection和DataSets是相同的,并将AutoCommit属性设置为True)

  • 假设我在表单上编辑DataSet中的一个字段并发布它。连接提交它,我可以在DB中看到这个修改。
  • 现在,我创建了一个DataModule实例,因此它创建了查询,打开了
  • 如果我再次尝试编辑该DataSet并发布它,则不会发生提交,并且修改将不存在于DB中,只保留在此事务上。

最近,我发现只有当查询在'OnCreate‘事件中打开并保持打开时才会发生这种情况。如果我在打开它之后立即关闭它,一切都很好。如果在创建DataModule实例之后打开它,那么所有操作都很好。

如何解决这个问题,让查询在OnCreate事件中打开?

注: AutoCommit属性总是真实的,使用Delphi XE8编译将允许所有的工作。

NB2:试图覆盖DataModule的create事件来打开那里的查询。同样的结果。

更新:如果我将Query.FetchOptions.Mode设置为“fmAll”,它就会工作。

Update2:发现它没有提交,因为当数据模打开查询时,连接的属性InTransaction变成True,否则它被设置为False

有人知道问题出在哪里吗?

EN

回答 2

Stack Overflow用户

发布于 2018-10-11 15:11:21

这似乎是一些人的错误,所以我报告了。如果您可以用一个示例程序复制它,或者找到引起(或解决)它的任何东西,请完成此https://quality.embarcadero.com/browse/RSP-21411

这个问题刚刚被Embarcadero“解决”了。它很可能会出现在未来的修补程序中。

票数 0
EN

Stack Overflow用户

发布于 2018-09-25 15:21:39

在Oracle DB上使用DelphiV10.2,我也面临着同样的问题。值得注意的是,我并没有在所有的测试环境中看到这种行为。

我正在使用FDMonitor获取有关事务处理的详细信息,我可以在日志中看到,在未能提交事务的环境中,查询中有一个“ACommit”值,该值设置为False,而在环境中设置为True,在环境中该值运行良好。这很奇怪。10.2之前用delphi版本编译的我的应用程序的旧版本适用于所有环境。

致以敬意,

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46580677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档