我的名字是Stefano Fanti,我是Plexa的开发人员。我们实际上正在使用您的组件(FireDAC),我正在联系您以解决一些问题
我们无法解决的问题。
在我们公司,我们决定将用Delphi7编写的传统3层DATASNAP应用程序移植到新环境Delphi XE7中,我们也决定使用新的组件库FireDAC。
我们的应用程序是以这种方式构建的:客户端使用TClientDataSet直接连接到服务器端,使用TDataSetProvider / MIDAS和TTable TQuery TDatabase组件(BDE)
我们用相关的FireDAC(FDConnection,FDTable和FDQuery)替换了BDE组件而没有任何问题,我们开始测试思考无论如何不需要执行它。
经过一些测试后,出现了一些问题:第一个问题与在DB(MS SQL Server)上执行的修改有关,第二个问题与应用修改后重新打开表有关。
在我们的例子中,RequestLive = True属性(默认),不允许对数据库应用修改(Post / ApplyUpdates)。
分配RequestLive = False,我们可以对所有表的记录进行修改,除了第一个,最后一个给我们错误。
已在每个数据库表上验证了上述异常。但是,所有数据库表都正确定义了主键。
尝试使用FireDAC帮助我读取选项RequestLive = False从Fetch,Options中排除fiMeta,防止组件使用表的主键,否则在任何其他情况下都能正确看到。
经过几次试验后,我发现两个配置应用于服务器端,使我们能够实现结果。
首次配置
第二次配置
上述配置使我们可以对表进行修改而没有错误,但仍然不允许我们解决第二个问题:为每个操作重新打开表。实际上,每次都会执行BeforeOpen和AfterOpen管理器。 我可以做些什么来避免在每次修改后重新打开表格? 用于应用修改的配置是否正确,或者是否存在另一种解决方案,允许我们避免代码修改导致我们延长开发时间?
提前感谢您的帮助。
祝你好运 Stefano Fanti