我有一个表单,其中包含一个带有员工列表的组合框。我想在下次打开此组合框时将上次选择的值设置为默认值。下面是我的代码,但不起作用。
Private Sub combobox_AfterUpdate()
newDefault = Form_Calc.combobox.Text
Form_Calc.combobox.DefaultValue = newDefault
End Sub
该列表包含完整的姓名,例如:“John Snow”;“Mary Jane Johnson”;“etc”
有人吗?
最佳答案
.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” 键的行。您可能需要完善此概述的建议。
我认为它可以为您工作,因为您的每个用户都有自己的数据库文件,其中包含表单和数据......您不需要担心一个用户覆盖另一个用户保存的首选项。
关于ms-access - 组合框设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21315684/