2013-01-04 86 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)'是如何工作的。 –

    相關問題