2013-01-04 62 views
0

我有一个窗体有两个使用外部连接链接的数据源。它通过使用表单数据源工作单元框架写入数据库。只有当按下按钮才能写入数据库

截至目前,从一个数据源表单控件移动到另一个表单数据源控件时,数据被写入。我只想在单击按钮时使用框架的Form Datasource Unit来激活/写入。

当从一个窗体控件移动到另一个窗体控件时,是否有办法阻止自动写入功能?

回答

1

首先看看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序列:

  1. leaveRecord返回true
  2. validateWrite返回true
  3. 书面
  4. leaveRecord返回true
  5. leaveRecord返回true(再次)

这是序列时validateWrite返回false:

  • leaveRecord返回false
  • 所以,你可以覆盖validateWrite默默地返回false

    1. leaveRecord返回true
    2. validateWrite返回false,当你不想保存。当您想要保存时一定要拨打super()

      或者您也可以拨打leaveRecord自己逼写:

      if (record_ds.leaveRecord(true)) 
      {} 
      

      当调用record_ds.leaveRecord(真)请遵守,它可能无法保存记录,例如如果验证失败。在这种情况下,leaveRecord将返回false。

      注意到您正在“反对”标准工作,这会使您的表单与其他表单的工作方式不同。

    +0

    一月,谢谢你的回答。使用表单数据源工作单元,写入方法永远不会被调用。它只执行Write()事先写入操作和Written()后写入选项。由于它是在服务器上执行的,因此无法覆盖实际的写入操作。任何进一步的建议是赞赏。 – user1949788

    +0

    答复已更新。 –

    +0

    另一个更好的更新,有点迟。我不得不知道'record_ds.leaveRecord(true)'是如何工作的。 –

    相关问题