我有一个窗体有两个使用外部连接链接的数据源。它通过使用表单数据源工作单元框架写入数据库。只有当按下按钮才能写入数据库
截至目前,从一个数据源表单控件移动到另一个表单数据源控件时,数据被写入。我只想在单击按钮时使用框架的Form Datasource Unit来激活/写入。
当从一个窗体控件移动到另一个窗体控件时,是否有办法阻止自动写入功能?
我有一个窗体有两个使用外部连接链接的数据源。它通过使用表单数据源工作单元框架写入数据库。只有当按下按钮才能写入数据库
截至目前,从一个数据源表单控件移动到另一个表单数据源控件时,数据被写入。我只想在单击按钮时使用框架的Form Datasource Unit来激活/写入。
当从一个窗体控件移动到另一个窗体控件时,是否有办法阻止自动写入功能?
首先看看HowTo: Unit of work implementation for a Form来检查你是否对齐。官方文档是Change Group and Optional Record Modes。
由于您正在“离开”记录而发出写入,请参阅Event Method Sequences when Focus is Removed from a Record。
这是当validateWrite
返回true序列:
这是序列时validateWrite
返回false:
所以,你可以覆盖validateWrite
默默地返回false
super()
! 或者您也可以拨打leaveRecord
自己逼写:
if (record_ds.leaveRecord(true))
{}
当调用record_ds.leaveRecord(真)请遵守,它可能无法保存记录,例如如果验证失败。在这种情况下,leaveRecord将返回false。
注意到您正在“反对”标准工作,这会使您的表单与其他表单的工作方式不同。
一月,谢谢你的回答。使用表单数据源工作单元,写入方法永远不会被调用。它只执行Write()事先写入操作和Written()后写入选项。由于它是在服务器上执行的,因此无法覆盖实际的写入操作。任何进一步的建议是赞赏。 – user1949788
答复已更新。 –
另一个更好的更新,有点迟。我不得不知道'record_ds.leaveRecord(true)'是如何工作的。 –