组合框设置默认值

时间:2014-01-23 17:46:43

标签: ms-access combobox access-vba ms-access-2003

我的表单中包含一个带有员工列表的组合框。我想在下次打开时将最后一个选定为此组合框的默认值。下面是我的代码无效。

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

该列表包含完整的名称,例如:“John Snow”;“Mary Jane Johnson”;“etc”

任何?

1 个答案:

答案 0 :(得分:3)

.Text属性仅在组合具有焦点时可用。在任何其他时间,您必须使用其.Value属性。

这适用于我的组合框,可以完成我认为你要求的内容。

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

该方法将保留DefaultValue,直到您关闭表单为止。但是,下次打开表单时,您希望再次使用最后一个值。

在这种情况下,您可以将值保存在Form_Close,然后在Form_Load下次将其恢复。

我使用表来存储用户选项值。我有这个查询 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

Form_Load,我可以检索该值并将其分配给cboAccountID.DefaultValue

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

请注意,此建议假设 tblOptions 中存在一行,其中包含“cboAccountID.DefaultValue”键。您可能希望改进这个概述的建议。

我认为它可以为你工作,因为你的每个用户都有自己的db文件,其中包含表单和数据......你不需要担心一个用户覆盖另一个用户保存的首选项。