【问题标题】:Select form rows using a checkbox on each row使用每行上的复选框选择表单行
【发布时间】:2019-12-19 00:56:27
【问题描述】:

这些行是从一个带有连接的视图中分组和排序的。我可以向视图所基于的表之一添加一个字段,但这会写入数据库。应暂时进行选择,然后用户单击顶部按钮之一以根据所选感兴趣的行生成报告。

我在详细信息部分添加了一个未绑定的复选框控件。 onClick 事件使用 MsgBox 报告正确的行 ID,问题是当我勾选其中一个时,它们都在视觉上被勾选。像这样:

我尝试从this question 的答案中应用 SelectionV2,但是当单击复选框时,没有任何变化,并且状态栏显示表单是写保护的,即使我允许编辑。查询不可更新,但我不想。我只想选择行。

【问题讨论】:

  • 显示表单代码,尤其是objRecordSelect.InitSelect(Form_Load),复选框绑定到=fnGetSelection([NameOfIDControl])
  • 我没有使用 SelectionV2。它只能使用表作为记录源,不能使用查询,并且ID字段必须是数字。
  • 是什么让你这么想?

标签: vba forms ms-access


【解决方案1】:

连续表单上的未绑定复选框通常绑定到一个表达式,我假设在 SelectionV2 中就是这种情况。

在这种情况下,您不能使用Click 事件,因为绑定到表达式的复选框是不可更新的并且不会触发Click 事件。

请改用MouseDown 和/或MouseUp 事件。它们在单击的开始和结束时触发,并且适用于绑定到表达式的复选框。

【讨论】:

  • 谢谢。我从它们未绑定开始,这给出了屏幕截图中的行为,所以我将代码放入 _Click 以保存单击了哪一行,或者如果已保存则将其删除,然后将复选框状态设置为该行是否已保存。然后我尝试更改为表达式并删除 _Click 代码,但无论我使用什么表达式,我都会得到“表单被写保护”并且复选框不会改变状态。
  • Eh... 您应该将控件绑定到一个表达式,并在单击事件上更改表达式的结果。您不应该直接更改组合框的值,因为这不起作用。
  • 当未绑定且没有代码时,复选框的行为与屏幕截图中一样。我必须读出以某种方式选择了哪些行。如果复选框表现得像松散的、未绑定的复选框,我可以,但似乎不可能将任何未绑定的控件放在一行上,而当一个控件发生更改时,所有这些控件都会被更改。
  • 是的,很明显。这就是为什么您需要将它们绑定到获取状态的函数,并使用单独的函数来设置状态,就像我说的 SelectionV2 所做的那样。
猜你喜欢
  • 1970-01-01
  • 2013-12-07
  • 2015-08-16
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
相关资源
最近更新 更多