我的表单中包含一个带有员工列表的组合框。我想在下次打开时将最后一个选定为此组合框的默认值。下面是我的代码无效。
Private Sub combobox_AfterUpdate()
newDefault = Form_Calc.combobox.Text
Form_Calc.combobox.DefaultValue = newDefault
End Sub
该列表包含完整的名称,例如:“John Snow”;“Mary Jane Johnson”;“etc”
任何?
答案 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文件,其中包含表单和数据......你不需要担心一个用户覆盖另一个用户保存的首选项。