2012-03-01 84 views
3

有沒有辦法在表單中更改值時立即將表寫入值寫入表格?現在,我必須更改表單中的值,然後在將值寫入相應的表之前,將字段單擊到子表單上。MS Access - 在表單中更改值後立即寫入表格

聽起來沒什麼大不了的,但某些控件需要當前數據才能提供有效的選項。如果用戶不知道點擊進入子表單,那麼他們查看的數據可能會過時。

+1

我想不出任何合適的情況下,你當然不希望以更新改變事件的表,和'更新後'要求你從控制中移出。如何包含某種刷新按鈕更新表格? – Fionnuala 2012-03-01 19:07:19

+0

有一個組合下拉框,它可以獲取票證號碼,票證狀態和該票證上的最新活動(由子表單編寫)。用戶可以更改票證的狀態,但組合下拉列表不會反映更改(並且在我的測試中,表格來源也不會),直到它們完全移出記錄爲止。完全移走記錄包括更改記錄或單擊子窗體。組合下拉將永遠更新EVENTUALLY,但我希望立即獲得。我不想爲Access做不完美的藉口。我只是想讓它工作。 :) – Ben 2012-03-01 19:47:43

+0

@Ben不幸的是,Access並不完美,用戶必須習慣於這種實現。 :) – Taryn 2012-03-01 19:59:56

回答

2

您的需求中的行爲是默認如何訪問功能。在大多數典型場景中,主窗體將成爲父表,因此,在將子記錄添加到這種關係設置之前,必須將父記錄寫入並保存到磁盤。

而不是要求的反向也是訪問的默認操作。

換句話說,不清楚爲什麼焦點從父窗體移動到子窗體時,父窗體的記錄沒有寫入表中。

因此,您的設置中的某些內容不正確,或者您必須展開所見的行爲。

默認情況下,將焦點從主窗體更改爲子窗體將導致將主窗體記錄寫入表中,並且按照常規原則將子窗體工具主窗體的焦點更改也應導致子將表格記錄寫入表格。

2

如果您正在匹配組合框,則可以將其用作鏈接主控字段,即控件本身的名稱。一旦選擇了組合票證,您的子表單應該立即更新。

Link Master Fields: Combo1 
Link Child Fields: Field1 
0

當用戶離開Lost_Focus事件中的字段時,您可以強制保存記錄。

Private Sub MyField_LostFocus() 

    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 

End Sub 
+0

DoMenuItem在Access 2000中被替換,並且只包含在內,因爲向後兼容性:http://msdn.microsoft.com/en-us/library/aa203634(v=office.10).aspx – Fionnuala 2012-03-01 23:47:32

+0

有趣的是,Access嚮導仍然使用它這是我如何生成上述命令 – ChrisPadgham 2012-03-02 03:52:28

+0

的原因是的,這就是爲什麼MVP告訴你要對Access嚮導非常小心,例如,Bob Larson在http://www.tech-archive.net/Archive/訪問/ microsoft.public.access.gettingstarted/2008-07/msg00093.html – Fionnuala 2012-03-02 09:40:54

0

我也遇到了同樣的問題,但在另一種情況下。我沒有子窗體,而是分屏上同一張表的數據表視圖,保存按鈕後沒有立即更新。按下DUPLICATE按鈕,而不是獲取最新記錄的重複數據,而是將指針移至第一條記錄,然後第一條記錄中的數據得到重複。

通過插入

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 

數據複製的代碼之前,我現在越來越有記錄指針棍子立即更新爲當前記錄中的數據,並根據需要相同的最後一條記錄被複制。

分享體驗。

感謝ChrisPadgham

0

只需使用這在您的表單模型:

Private Sub {your textbox name her}_AfterUpdate() 
    Me.Refresh 
End Sub