2013-02-19 70 views
1

在ms訪問中,我有一個表單,它也有一個子表單。我想以編程方式將主表單中的RecordsetType更改爲快照,當子表/子表單具有一對多關係中的關聯記錄時。我寫了一些vba代碼來做到這一點,但我遇到了一些非常奇怪的行爲。以編程方式更改以ms訪問的RecordsetType或更好的方法

然後我發現這是因爲當我改變RecordsetType時,表單刷新並導航回第一條記錄。這會導致On Current事件和相關代碼在子表單和主表單中兩次觸發。我正在考慮使用DoCmd.SearchForRecord導航回原始記錄,但很快就意識到它不起作用,因爲DoCmd.SearchForRecord中的WHERE條件在事件第二次觸發時被覆蓋。這一切似乎都很低效。

有沒有其他方法可以做我想做的事情?我真的不想將窗體中的控件設置爲「禁用」。

+1

爲什麼你不希望設置窗體AllowEdits屬性?這很簡單。 – Fionnuala 2013-02-19 16:14:45

+0

是的,這是一個非常簡單的解決方案。我一直在做三個星期的VBA編程。儘管記錄集類型和允許編輯屬性表中的相同選項卡上,我甚至沒有看到它在那裏。而令人尷尬的是,我花了很多時間試圖弄清楚如何使這個工作。謝謝! – jaromey 2013-02-19 16:39:08

+0

這是一個真正的問題,試圖看到這些東西,有這麼多dratted屬性:) – Fionnuala 2013-02-19 16:40:37

回答

1

MS Access有一些選擇的表單屬性應該適合:AllowEdits,AllowDeletions和AllowAdditions。這些可以單獨設置或一起設置。在這種情況下,看來你需要AllowAddition設置爲yes和AllowEdits設置爲

form properties

+1

我決定在必要時以編程方式更改「允許編輯」屬性(無論如何我並不真的需要它)。我不知道爲什麼,但我意識到,當我在主窗體中將允許編輯更改爲否時,我也可以不編輯或向我的子窗體添加新記錄,但是當我以編程方式執行時,它工作得很好,我能夠修改子表單。我已經測試了幾次,而且我的代碼不是很複雜。此外,On Current事件不會像前面提到的那樣觸發兩次。 – jaromey 2013-02-22 02:03:22