【问题标题】:Combobox set Default Value组合框设置默认值
【发布时间】:2014-02-14 10:39:56
【问题描述】:

我有一个包含员工列表组合框的表单。我想在下次打开时将此组合框的最后选择设置为默认值。下面是我的代码不起作用。

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

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

有人吗?

【问题讨论】:

  • 尝试以下操作:Form_Calc!combobox.DefaultValue = Me!Product.ItemData(0)

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


【解决方案1】:

.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 文件,其中包含表单和数据……您无需担心一个用户会覆盖另一个用户保存的首选项。

【讨论】:

  • 我已经试过了。当表单打开时,默认值是选中的,但是当关闭并再次打开时,没有默认值。
  • 如果您希望 DefaultValue 更改保持不变,您必须将其保存在表单的设计中。
  • 如何动态执行此操作?想法是,每次最后一个用户更改所选值时,这将成为默认值。
  • 我认为我们需要更多细节。是否所有用户都打开同一个 db 文件,还是每个用户都有自己的前端 db 文件副本,共享数据存储在后端 db 文件中?
  • 每个用户都有一个本地mdb,表是本地的。但是这个组合框使用的是列表,而不是表格。
猜你喜欢
  • 1970-01-01
  • 2015-02-08
  • 2017-10-03
  • 2011-10-16
  • 1970-01-01
  • 2011-10-11
  • 2014-02-15
  • 1970-01-01
相关资源
最近更新 更多