【问题标题】:Excel-like data entry form for access 2003 database用于访问 2003 数据库的类似 Excel 的数据输入表单
【发布时间】:2026-01-07 11:35:01
【问题描述】:

我正在尝试将用于员工培训记录的 Excel 电子表格转换为 Access 2003 数据库。我已将数据库设置为 4 个表:Staff、Tasks、Trainers 和 TrainingRecords。培训记录表具有以下字段:RecordID(自动编号和 PK)、StaffID(链接到员工)、TaskID(链接到任务)、DateCompleted 和 TrainerID(链接到培训师)。我已经创建了用于将数据输入到员工、任务和培训师表中的所有相关表格。我还创建了一个表单,您可以通过从组合框中选择员工姓名、任务名称和培训师姓名来输入新的培训记录。

我的问题是我的老板希望培训记录的数据输入看起来更像是 excel 电子表格,其中显示了所有可用任务的完整列表,然后用户可以填写完成日期和培训师姓名一次完成所有相关项目,通常会留下多项任务而没有创建日期和培训师(因为工作人员尚未接受过该特定任务的培训)。我不太确定如何着手解决这个问题 - 我有以下想法,但不知道它们的可行性:

1) 加载表单时,为任务名称中的所有可用任务和标签添加复选框。然后,用户将单击他们想要添加的任何任务,并为他们勾选的所有任务指定相同的日期和培训师姓名。

2) 使用 office excel 电子表格控件(10 或 11)允许数据输入,然后编写一些代码来交互信息并根据需要创建/修改 TrainingRecords 表。这个选项对我来说应该是相当直接的,因为我已经完成了很多 Excel VBA 编程。但是,我不知道如何访问电子表格中的 Range/Cells 对象以读取/写入数据。我猜这个控件并不是真的要以这种方式使用。

3) 创建一个临时表(将通过子表单查看),这将填充所有任务的列表,以及当用户从下拉列表中选择员工姓名时员工是否接受过相关培训主窗体上的下拉框。如果用户从下拉框中选择不同的员工,表单将刷新并显示该员工的数据。

我愿意接受比我在这里的想法更直接的任何其他想法/建议。

【问题讨论】:

  • 您是否可以发布屏幕截图或下载电子表格的链接,以便人们更好地了解您的需求,仅从描述中很难正确描绘?

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


【解决方案1】:

Access 中的表单可以配置为数据表视图表单,看起来类似于 Excel。但是,我认为使用数据表表单并不能解决您在这里遇到的所有问题。

您最好按照#1 中的建议进行操作。填充复选框的部分需要取消绑定,您必须编写代码填充复选框并根据复选框的选中方式插入/更新/删除记录。您不能在数据表表单或连续表单中使用未绑定字段。

选项#3 也可以。或者,您也可以将表单绑定到伪造的 ADO 记录集。再一次,您必须编写代码来填充 ADO 记录集,并且您必须编写更多代码来将 ADO 记录集中的所有添加/编辑/删除推送回您的数据源。

我会远离选项 #2。我想不出很多在 MS Access 应用程序中使用或嵌入 Excel 的理由(Excel 的图表可能是唯一的原因之一)。

我要警告您的另一件事是让您的老板决定事物的外观和感觉。当然,老板会有发言权,但理想情况下,他的意见应该是说某些东西太笨拙、太不直观、需要太多点击、需要太多培训才能使用等等。我允许用户规定应用程序的外观和行为的细节,最终结果并不好。在其他情况下,我选择了实现某个功能的最佳方式并根据我自己的知识为其设计了用户界面,结果比我允许最终用户指定他们想要的控件的情况要好得多,他们去哪里,他们持有什么数据,他们的行为方式等等。经验丰富的应用程序开发人员应该了解设计环境,这胜过最终用户的知识,并允许您为他们提供满足或超出他们期望的东西。当然,不要关闭你的老板或最终用户的反馈,但要尝试找出他们想要的东西与他们所拥有的不同的原因。最好不要让用户的旧习惯和习惯决定用户界面的外观。你永远不可能那样取得进步。今天的应用程序应该具有现代的、用户友好的用户界面,如果您构建应用程序以适应那些思想停留在 90 年代或仅仅停留在其他低劣范式的人,那么您将无法做到这一点。

【讨论】:

  • +1 当然,第一条规则是永远不要让接收者决定过程,他们应该简单地概述他们想要什么,然后相信开发人员会尽其所能。