最好的辦法在這種情況下是不是要試圖通過一組變量。代碼太多,而且不靈活。例如,如果您需要傳遞兩個值,那麼多年來該需求增長到5個值時會發生什麼?試圖保持和傳遞一整套價值觀是過多的編碼工作。
請記住,ms-access中的每個表單實際上都是一個可以在代碼中操作的類對象。因此,在這裏使用對象方法,你會發現你不僅可以編寫更少的代碼,而且你的代碼會更乾淨,更模塊化,不需要全局變量,而且你編寫的代碼通常可以在不同的表單之間重複使用。
方法如下:
一般來說,當一種形式推出另一種形式的第二形式的開放活動的形式(事實上,你甚至可以用遲至載事件),您可以拿起對前一個表單對象的引用。換句話說,你可以在這裏使用對象方法。
在表格模塊級別,形式我宣佈一個表單對象爲:
Option Compare Database
Option Explicit
dim frmPrevious as form
然後,在表格上載事件,我們去:
Set frmPrevious = Screen.ActiveForm
現在,任何代碼在我們的表單中,可以自由地使用代碼,事件,甚至是從代碼中的先前表單公開的變量。
所以,如果你想強制先前形式的磁盤寫入,並重新裝載數據。
frmPrevious.Refresh
如果你想設置的ID值,然後去:
frmPrevious!ID = some value
而且,請注意,你甚至可以聲明的形式以前作爲該形式的公共變量,因此,如果您有兩種形式深,你可以去:
frmPrevious.frmPrevious!ID = some value
所以,簡單地聲明的形式分別形成代碼模塊中的對象(或免得你需要在代碼中使用值的)。上面的意思是任何代碼都有一個對以前的表單對象的引用。
frmPrevious.MyCustomRefresh
,甚至東西像一些選項來強制前面的表格,生成並設置一個發票號:聲明爲恥骨的形式將成爲形式的方法和功能可以像運行
frmPrevous.SetInvoice
或 frmPrevious.SetProjectStatusOn
所以不僅可以洗牌值和數據來回,但你可以輕鬆執行您在代碼打造爲prevous形式的特點和功能。
其實作爲一個編碼標準,我的大多數形式都稱爲MyRefresh恥骨功能。
注意,這種方法的好處是,你可以這樣讀+使用+設定值從先前的形式。這使您的代碼不僅可以接收值,還可以以前一種形式設置值。所以這種方法是雙向的。您可以在表單之間來回拖放數據和值。這裏的另一個優點是,你不再僅僅限於變量,但可以使用領域,控制值(事件,屬性)等
這種方法意味着現在好多以前的表格是在您的指尖。
所以,不要試圖通過變量的整體失衡。通過對錶單的引用,你有一個很好的現成物體在你的指尖,它使這種類型的編碼問題輕而易舉。
它已經有一段時間,因爲我已經與訪問工作,但你可以調用其他的形式,設置模塊級/表單級的變量,然後關閉其他的形式? – 2009-09-22 22:33:43