【问题标题】:set Access database table field with form check box使用表单复选框设置 Access 数据库表字段
【发布时间】:2015-02-09 06:54:39
【问题描述】:

我正在尝试使用表单上绑定复选框的值来设置表中数字字段的值。如果选中,则该值需要为 40,如果未选中,则该值需要为 0。我是新手,不知道从哪里开始。

否,复选框已添加到表单并绑定到表中的数字字段。数据是从一个过时的系统导入的,该系统使用大多数用户无法理解的代码,所以如果表中显示 40,我只想让表单显示已选中,所有其他值都应显示为未选中,我希望用户选中/取消选中相应地更新表格的复选框。

该复选框用于指明客户是否提供了直接借记信息。 40 意味着他们有,40 以外的任何东西都意味着他们没有。

【问题讨论】:

  • 此复选框是否绑定到同一张表中的Yes/No 字段?

标签: ms-access


【解决方案1】:

一种方法是在 Access 中使用 VBA。在 Access 中访问 VBA 控制台的方式是在表单的设计视图中,右键单击复选框控件并从菜单中选择“构建事件”。确保在表单设计视图中复选框的属性中将控件的三重状态设置为“是”。此外,请确保复选框的 Control Source 指向您要放置数据的表中的字段。

请注意,在执行此操作之前,在控件名称前加上前缀会很有帮助...类似chkDebitInfo...“chk”代表复选框。您可以更改控件属性表中的名称,方法是单击“其他”选项卡,然后简单地更改默认名称,这可能类似于 Check625。此外,您希望将表字段的数据类型设置为“整数”,以便它保存值。

一旦您进入 VBA 控制台,在选择 Build Event... 之后,您就会看到控件的子过程。我已经为你做了一个示例:

Private Sub chkDebitInfo_Click()

If chkDebitInfo.Value = True Then
   chkDebitInfo.Value = 40         // Sets the checkbox to 40 if checked

ElseIf chkDebitInfo.Value = False Then
    chkDebitInfo.Value = 0        // Sets the checkbox to 0 if un-checked

End If

End Sub

我已经评论了设置复选框值(如果选中或未选中)的语句,因此您不必添加这些语句。只需将控件名称替换为您的名称,或者如果您没有更改它,则使用默认名称,您很好。然后,当复选框被选中或未选中时,您将看到填充在数据库表中的值。

或者,您可以将复选框设置为表单加载时的默认值,但您没有说明,所以我不会深入探讨。希望这可以帮助。如果我需要进一步说明,请告诉我。

【讨论】:

  • 谢谢,此解决方案有效,但是,除非我单击表单的其中一个子表单,否则它似乎不会更新表格。我已经尝试将它放在复选框的 OnClick 和 OnMouseUp 事件以及表单的 AfterUpdate 事件中,但没有任何成功。知道可以在哪里自动更新吗?请记住,它将是用户将要更改的表单的唯一控件,因此在选中/取消选中该框后,他们不太可能点击任何其他字段。
  • 不,我不知道您的实际表单的设计。我为您创建的解决方案应该可以完成更新数据库表中的值。如果用户单击检查,则根据您使用或设置的逻辑,该值将相应地填充到您要进行的数据库表中。使用 Access 2013,对我来说效果很好;不知道你运行的是什么版本的Access。如果无法看到您正在做的事情的工作模型,我无法将您遇到的错误放在一起。另外,你没有代码存根供我查看,看看你做了什么。
  • 另外,检查默认值并确保您在代码中为其分配了一个值。最后,查看您的三重状态,并将其切换为“否”/“是”,看看这对您有什么作用。同样,能够看到正在发生的事情要好得多。
  • 由于该解决方案对您有所帮助,请检查一下,以结束问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多