我正在尝试将员工培训记录的Excel电子表格转换为Access 2003数据库。我已将数据库设置为4个表:Staff,Tasks,Trainers和TrainingRecords。训练记录表包含以下字段:RecordID(自动编号和PK),StaffID(链接到人员),TaskID(链接到任务),DateCompleted和TrainerID(链接到培训师)。我已经创建了所有相关表单,用于将数据输入到Staff,Tasks和Trainers表中。我还创建了一个表单,允许您通过从组合框中选择员工姓名,任务名称和培训师姓名来输入新的培训记录。
我的问题是我的老板希望培训记录的数据输入看起来更像excel电子表格,它显示所有可用任务的完整列表,然后用户可以填写完成日期和培训师名称所有相关项目一次完成,通常会留下多个任务而没有创建日期和培训师(因为工作人员尚未接受过关于该特定任务的培训)。我不确定如何开始这个 - 我有以下想法,但不知道它们是多么可行:
1)当表单加载时,从任务名称添加所有可用任务和标签的复选框。然后,用户将单击他们想要添加的任务,并为他们勾选的所有任务指定相同的日期和培训师名称。
2)使用office excel电子表格控件(10或11)允许数据输入,然后编写一些代码以插入信息并根据需要创建/修改TrainingRecords表。这个选项应该对我来说相当直接,因为我已经完成了很多Excel VBA编程。但是,我无法弄清楚如何访问电子表格中的Range / Cells对象来读取/写入数据。我猜这个控件并不是真的意味着以这种方式使用。
3)创建一个临时表(可以通过子表单查看),这将填充所有任务的列表,如果工作人员已经对他们进行了培训,那么当用户从一个drop中选择了一个员工姓名时主窗体上的下框。如果用户从下拉框中选择不同的工作人员,表单将刷新并显示该工作人员的数据。
我愿意接受比我在这里提出的想法更直接的任何其他想法/建议。
答案 0 :(得分:1)
Access中的表单可以配置为数据表视图表单,类似于Excel。但是,我不认为使用数据表表格可以解决您在这里遇到的所有问题。
你可能最好做一些你在#1中建议的事情。填充复选框的部分需要解除绑定,您必须编写代码填充复选框,并根据框的检查方式插入/更新/删除记录。您不能在数据表表单或连续表单中使用未绑定字段。
选项#3也可以。或者,您可以将表单绑定到伪造的ADO记录集。再一次,您必须编写代码来填充ADO记录集,并且您必须编写更多代码以将ADO记录集中的所有添加/编辑/删除推送回您的数据源。
我会远离选项#2。我想不出在MS Access应用程序中使用或嵌入Excel的原因很多(Excel的图表可能是其中一个原因)。
我想警告你的另一件事是让你的老板决定事情的外观和感觉。当然,老板会说出自己的意见,但理想情况下他的意见应该是说某些东西太笨拙,太不直观,需要太多的点击,需要太多的培训才能使用等等。我允许用户规定应用程序的外观和行为的细节,最终结果并不好。在其他情况下,我根据自己的知识选择了实现某个功能的最佳方式并为其设计了用户界面,结果远比我允许最终用户指定他们想要的控件的情况要好得多,他们去哪里,他们拥有什么数据,他们的行为方式等。经验丰富的应用程序开发人员应该了解设计环境,胜过最终用户的设计环境,并允许您为他们提供满足或超出他们期望的东西。当然,不要关闭老板或最终用户的反馈意见,但要尽量找出他们为什么想要与他们不同的东西。最好不要让用户的旧习惯和习惯决定用户界面的外观。你永远不可能以这种方式取得进步。今天的应用程序应该具有现代的,用户友好的用户界面,如果你构建你的应用程序以适应那些想法被困在90年代或仅仅停留在其他一些低级范例中的人,你就无法做到这一点。