2014-01-23 132 views
2

我有一個表單,其中包含一個帶有員工列表的組合框。我希望將下次打開時該組合框的最後選定內容設置爲默認值。下面是我的代碼不工作。組合框設置默認值

Private Sub combobox_AfterUpdate() 
    newDefault = Form_Calc.combobox.Text 
    Form_Calc.combobox.DefaultValue = newDefault 
    End Sub 

列表中包含完整的名字,像:「斯諾」,「瑪麗·簡·約翰遜」,「等」

有人嗎?

+0

嘗試以下操作: Form_Calc combobox.DefaultValue =我Product.ItemData(0) – Zzyrk

+0

這不工作 – luckasx

回答

3

.Text屬性僅可同時該組合具有焦點。在任何其他時間,您必須使用其.Value屬性。

這適用於我的組合框,做什麼,我想你問的。

Private Sub cboAccountID_AfterUpdate() 
    Me.cboAccountID.DefaultValue = Me.cboAccountID.Value 
    MsgBox "DefaultValue: " & Me.cboAccountID.DefaultValue 
End Sub 

該方法將根據需要維護DefaultValue,直到您關閉表單。但是當下次打開表單時,您希望再次使用最後一個值。

在這種情況下,你可以在Form_Close保存的價值和它下一次恢復。

我使用表來存儲用戶選項值。我有這個查詢,qryUpdateOption,更新保存的值。

PARAMETERS pKey Text (255), pValue Text (255); 
UPDATE tblOptions AS o 
SET o.option_value = [pValue] 
WHERE o.option_key=[pKey]; 

因此,在Form_Close,我可以節省cboAccountID.DefaultValue當前值。

Dim db As DAO.Database 
Dim qdf As DAO.QueryDef 
Set db = currentd 
Set qdf = db.QueryDefs("qryUpdateOption") 
qdf.Parameters("pValue").value = Me.cboAccountID.DefaultValue 
qdf.Parameters("pKey").value = "cboAccountID.DefaultValue" 
qdf.Execute dbFailOnError 

而在,我可以檢索該值並將其分配給cboAccountID.DefaultValue

Me.cboAccountID.DefaultValue = DLookup("option_value", _ 
    "tblOptions", "option_key='cboAccountID.DefaultValue'") 

注意這個建議假定行tblOptions「cboAccountID.DefaultValue」鍵存在。您可能想要完善這個概述的建議。

而且我認爲它可能爲你工作,因爲每個用戶都有其包含的形式和數據自身的數據庫文件......你不需要過度寫另一用戶的偏好保存要關注一個用戶。

+0

我已經嘗試過這個!窗體打開時默認值是選中的,但是當關閉並再次打開時,沒有默認值。 – luckasx

+0

如果您希望「DefaultValue」更改保持不變,則必須將其保存在表單的設計中。 – HansUp

+0

我該如何動態地做到這一點?理想是,每次最後一位用戶更改選定的值時,這將成爲默認值。 – luckasx