我正在開發一個相當復雜的 Access 資料庫,嘗試使用自定義按鈕構建表單以處理記錄。我正在使用串列框來顯示和瀏覽記錄,并且現有記錄的所有欄位都被禁用,除非用戶按下編輯按鈕。我遇到的問題是,如果我按下編輯或添加新按鈕,啟用所有欄位,然后嘗試更改組合框中的選擇,它不會在第一次嘗試時更新。
如果我先編輯一個文本框,那么組合框就可以正常作業。我已確定控制元件的 beforeUpdate 和 afterUpdate 事件在第一次嘗試時未觸發,但該操作觸發了 form_Dirty 事件,然后它按預期作業。我嘗試使用 Edit 按鈕設定 Me.Dirty = True 并解決了問題,但它會導致我的其他一些代碼出現問題,如果我了解問題的實際原因,這似乎是一個不必要的解決方法。如果我不系結組合框,它也可以按預期作業,但我正在嘗試構建一個不需要太多作業來構建新表單的模板,我寧愿不走那條路。
它必須與我正在使用的一些代碼有關,因為我可以啟動一個基本表單并且組合框可以正常作業。我已經開始了一個基本的測驗表單,并且正在從我的模板表單中一點一點地添加代碼,直到出現問題,但這是一個乏味的程序。任何幫助,將不勝感激。
我錯過了什么?是否有某種方法可以在表單變臟之前觸發組合框事件?
更新:我有一個基本表單的模板,一個帶有單個子表單的表單,以及一個在選項卡控制元件中有多個子表單的表單。
經過更多測驗后,我發現此問題不適用于沒有子表單的基本表單。此模板使用與其他模板類似的代碼來創建新、編輯、取消、保存和洗掉按鈕,并防止意外更改,防止在編輯期間出現 Form_unload 等。我能想到的主要區別是帶有子表單的模板使用類模塊和集合來保存各種資料并在主表單和子表單之間傳遞。不確定這是否或如何與組合框功能相關。
去年冬天我建造了大部分,然后在夏天太忙了,無法作業。剛剛再次拿起它,我不得不重新學習我的代碼如何作業的許多細節。
uj5u.com熱心網友回復:
您可以嘗試在更新后事件中使用 Me.CboName.Requery。
uj5u.com熱心網友回復:
我想到了。我從 Form_Dirty 事件中呼叫了一個帶有表單重繪 的程序,無論出于何種原因,在完全錯誤的時間重繪 導致組合框 Before_Update 和 After_Update 事件被跳過并且組合框值不改變。它還導致輸入到文本框中的文本在第一次擊鍵時覆寫現有文本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528692.html
標籤:vba毫秒访问事件组合框
