2013-07-31 34 views
0

我是VBA和Access的新手,並且繼承了需要改進的數據庫。使用以前的值和新值運行SQL字段值更改

我在訪問的形式,顯示了一個表編輯: enter image description here

當表中的勞動率值改變,我需要運行下面的查詢來更新另一個表:

update finishedproduct set labourrate = newvalue where labourrate = oldvalue; 

(是這個數據庫的設計是壞的。)

  • 哪個事件我可以處理向勞動率反應變化?

  • 如何獲取該字段的前一個值,然後獲取該字段的新值 ?

  • 東西我不知道:當用戶更改人工費率值 在這個網格是表立即更新表?

+0

沒有。 。 。 。 。 。 – cja

回答

1

您可以使用表格的前事件和OldValue有以前的值(Value是新值):

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    MsgBox Me.txtLabourRate.OldValue 
    MsgBox Me.txtLabourRate.Value 
End Sub 

這種情況記錄更新只是之前。您不能使用表單的AfterUpdate事件,因爲OldValue將與新值相同。

更新前發生緊接記錄更新。記錄將被更新 - 除非Cancel參數被專門設置爲True。表單中有Current事件,但是在記錄更新後Old/Value會反映當前行的行 - 它們已經移動到的行。

可以使用表格的AfterUpdate事件,但不需要:使用BeforeUpdate。爲了使用AfterUpdate,您需要使用Current事件將舊/當前值存儲在變量中。


當磁場發生變化的記錄並不會立即更新,但是,當他們從當前行(記錄)搬走整個記錄被更新。

+0

知道這一點很有用,但我需要知道表中的值何時更新,而不是何時更新。 – cja

+0

我修改了我的答案。 –

+0

感謝您從數據庫中仍然沒有更新的值,因爲用戶還沒有離開當前行。發生這種情況時會發生事件嗎? – cja