【问题标题】:How to create a checklist in MS Access that changes conditional formating如何在 MS Access 中创建更改条件格式的清单
【发布时间】:2019-04-11 14:35:40
【问题描述】:

我正在建立一个用于维护照明设备的数据库,每个设备都有自己唯一的序列号。我已经有一个包含所有这些数据的 excel 文档,但想创建一个更好的系统来管理数据。

这个想法是,每次我为一个单位服务时,我都会有一份新工作#,并填写一份清单并为该工作输入注释。我创建了一个工作表,其中包含序列号、接收日期、完成日期、注释等列。我还创建了一个工作表,其中包括该工作# 的所有相关信息。我现在的问题是如何创建相对有效的清单来修改文本字段的背景颜色。

对于第一部分,我需要一个下拉列表,其中包含不同型号的灯光可供选择(每个灯光都有不同的功能集要测试),这取决于我选择的型号,将显示/生成该模型独有的清单,包含大约 25 个项目。
然后,当检查该特定检查表的所有复选框时,我需要文本字段的背景颜色(“单位好?”)以从红色更改为绿色。这些清单需要特定于工作#/record #,我很好奇是否有一种相对简单/有效的方法来做到这一点。

目前我有大约 150 个工作岗位,而且会随着时间的推移而增加。 我的偏好是尽可能避免使用 VBA,但如有必要,一些指针或推荐的教程将非常有用。

我已经建立了基础表格和表格,但还没有弄清楚如何做清单。

这里的任何帮助将不胜感激。如有必要,我很乐意提供任何其他信息/文件。

【问题讨论】:

标签: ms-access checkbox conditional-formatting


【解决方案1】:

是的,这是可能的,并且可以在没有 VBA 的情况下完成(尽管需要宏)。

  1. 首先,您需要再创建几个表。我假设您每个工作只处理一个灯光模型(多个模型是可能的,但更复杂)。您将需要创建三个表(如果您已经有一个用于灯光模型的表,则需要创建两个表)。
    • Light_Models 将包含有关您服务的灯型号的信息,包括它们的唯一序列号。
    • Model_Checklist_Defaults 将包含每个灯光模型的默认清单值
    • Job_Checklist 将包含基于您服务的灯光模型的特定作业的清单值(这是一个作业中的多个灯光模型会增加复杂性的地方)。当您为特定的光照模型创建作业时,您需要将 Model_Checklist_Defaults 中的适当值复制到 Job_Checklist 中(这可以通过创建查询并从宏中调用来完成,我不会在这里介绍)。

这些表需要通过以下方式关联Relationships image。我只包含了最少的列,您可以根据需要添加更多。

  1. 您需要创建一个表单来展示您的清单,以及可选的其他工作详细信息。此表单假定您已经创建了一个作业并选择了一个灯光模型,但您可以修改表单以一步创建作业和清单。

    示例表单 (Form image) 有一个标识当前作业的 jobNumber 文本框、一个背景颜色根据清单更改的 colourField,以及一个显示 Job_Checklist 表中的数据的子表单,该表格由 jobNumber 文本框过滤(此过滤在子表单Property image 中带有链接字段。

  2. 最后一步是配置 colouredField 背景颜色并在表单、jobNumber 和子表单上设置一个宏,以在单击/取消单击复选框时更新 colourField。

    这个宏需要在几个地方设置(Macro image):

    • Form OnLoad 事件:这可确保在表单打开时根据清单更新 colouredField(例如,在您关闭并重新打开的情况下)

    • jobNumber AfterUpdate 事件:该字段在其值更改时更新清单子表单,因此您必须每次重新检查清单值

    • 子表单 OnExit 事件:在您单击子表单(例如选中一个框)然后单击主表单中的另一个字段后调用此事件。此事件捕获实际的复选框更改。

【讨论】:

  • 首先,非常感谢您花时间真正深入研究并构建测试数据库。我无法告诉你我多么感谢你愿意在这里提供帮助。话虽如此,我确实有一些问题/ cmets。首先,澄清一下,每个工作 # 只包含一个独特的灯具,因此只有一个模型/清单。关于你的建议。我对 Light Models 表的使用感到困惑。这只是让我感到困惑,因为型号没有唯一的序列号,而是唯一的序列号有重复的型号
  • 目前我的 Job # List 表包含 Job #'s、serial #'s 和该特定工作的所有注释。我不能简单地在我的工作表中添加一个多值下拉字段吗?这可以包含模型名称,并且可以绑定到作业# 列表。如果我理解正确,那么当做出该选择时,我不能启动宏,然后将正确的清单表或子表单加载到我的表单中吗?在考虑如何将选定/完成的清单值绑定到该特定作业时,这开始让我感到困惑,而不会覆盖另一个作业清单值。
  • 我想知道在我的工作中为每个工作增加大约 30 或 40 列是/否字段是否是一个糟糕的选择 # 列表表将由我的复选框切换工作形式。在这种方法中,我认为必须让正确的子表单清单填充作业表单,然后让这些复选框仅在我的作业#list 表中切换该作业# 行的值。在这种方法中,我将在每个作业行中包含所有模型的所有清单项目,但条件格式规则必须只听取该模型的相关项目。这是可能的/可取的吗?
  • Light_Models 表的原因是为了唯一标识每个模型,以便您可以管理 Model_Checklist_Default 中的默认清单项。但是,您是对的,每个型号都会有多个与之关联的序列号,所以我有点倒退了。
  • 您可以使用下拉菜单来显示 Light_Models 表中的值。为简单起见,您可能希望在选择模型后生成清单的下拉列表旁边有一个按钮(防止重复)。 Job_Checklist 表解决了您对覆盖另一个作业的清单的担忧。此表使用 JobNumber 和 Checkbox_ID 来唯一标识每个必需的复选框。因此,与其在 Job#List 表中使用一堆不明确的复选框列,不如将复选框和值存储在另一个表中并通过子表单显示它们。
猜你喜欢
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多