【问题标题】:MS Access - Ticking record checkbox on pressing a buttonMS Access - 按下按钮时勾选记录复选框
【发布时间】:2013-05-03 22:51:02
【问题描述】:

我正在使用 Access 2003

我有一个表格,其中列出了几条付款记录,主要字段是已付款项和银行所说的已付款项,并带有一个显示差异的文本框和一个用于查看是否会处理该付款的复选框。

通常用户必须手动查看差异字段,然后标记每个记录以进行处理,然后按“提交”。

我想自动化这个过程,所以通过按下一个按钮,所有差异 = 0 的记录都会被自动选择,所以用户只需要按下“提交”。

【问题讨论】:

  • 复选框是否绑定(即其控制源是表单记录源中的一个字段)?
  • 有点,复选框的存在只是为了让处理事件知道要处理的记录,但是数据库中有一个字段,所以它知道已经处理了哪些记录
  • 表单包含一个列表。该列表一次列出了几条记录,每条记录都有它们的复选框和文本字段。我想浏览列表并查看每条记录,如果字段差异为零,请标记该记录复选框并移至下一个。
  • 列表是子表单吗?
  • 不,表单详细信息作为列表工作。

标签: ms-access checkbox vba


【解决方案1】:

在我看来,您需要更新复选框后面的字段,而不是复选框本身。这是一个想法:
如果您正在寻找一个简单的解决方案,例如在表单上放置一个命令按钮并运行一个更新所有复选框的过程,您可以执行以下操作:

  • 创建命令按钮
  • 将它放在表单的某个位置(可能是页眉或页脚)
  • 给它一个合乎逻辑的名字
  • 选择按钮属性>>事件>>点击>>事件过程
    ...你可以做一些简单的事情,如下所示

.

'Option Compare Database
'Option Explicit

'***Update a checkbox (yes\no field) depending on the value of a field***
'Table name:tblPayments
'Field name:difference
'Checkbox field name: toBeProcessed

Private Sub cmdUpdateRecords_Click()

Dim rstMyTable As DAO.Recordset 'Your table
Dim strSQL As String    'Your sql

'An SQL string based on the checkbox you want to update and the field you are assessing
strSQL = "UPDATE tblPayments SET tblPayments.toBeProcessed = IIf([difference]=0,True);"

'Execute the sql
CurrentDb.Execute strSQL

'Kill the object
If IsObject(rstMyTable) Then Set rstMyTable = Nothing
Me.Requery

End Sub

【讨论】:

  • 谢谢你成功了!请记住,这在我的情况下是有效的,因为该表是临时的,因此直接从中更改数据没有问题,但是如果它直接从真实表中读取数据,直接更改数据而不进行处理将是危险的。
  • 你是对的。这只是一个简单的示例,但如果信息是敏感的,则应设置条件,以确保只有某些人可以运行此程序或仅在某些时间运行。祝你好运。
猜你喜欢
  • 1970-01-01
  • 2020-06-16
  • 2013-05-28
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 2019-05-23
  • 2020-09-14
  • 1970-01-01
相关资源
最近更新 更多