2014-01-23 106 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