编辑/添加多个相关表上的数据[英] Edit/Add data on multiple related tables

问题描述

你好,

我是 MS 访问新手,无法找到管理以下内容的方法:

我有一张"主桌"(tblProjects) 和 3 个"明细表";(tblSchedule、tblCosts、tblResources).这 3 个详细信息表具有"projectID".作为外键.

我有一个主窗体(frmProjects),一个子窗体在底部显示项目概述(数据表视图),在顶部有一个选项卡控件,带有以下选项卡:
- frmProjects_sub:
- frmSchedule_sub
- frmCosts_sub
- frmResource_sub

我基本上希望用户从 mainfrm 上的 subfrm 中选择一个项目,然后在不同的选项卡上获取所选项目的不同详细信息.这部分是通过主窗体上的未绑定文本控件来工作和实现的,该控件为选项卡提供主键.

现在我想添加命令按钮来添加一个新项目.单击该按钮时,应弹出一个具有相同 4 个选项卡的新表单,所有控件为空以填充数据.但我只希望在用户单击"保存"时创建记录集.按钮.在此之前,用户应该能够浏览选项卡并更改所有信息.
与编辑按钮相同,只是应该显示选定的记录,等待更改.
这意味着还应该有一个"取消".按钮,如果不单击保存按钮,则可以撤消所有更改.

我正在阅读很多关于记录集、插入查询的信息……但我不知道该怎么做以及如何开始?

我希望它是可以理解的?!如果还有什么遗漏请追问.

非常感谢您帮助我!

推荐答案

这里的图片会有所帮助.
大多数较新的窗口操作系统都包含"截图工具"
使用它来捕获并保存打开表单的 jpg.
使用高级编辑器,您可以使用 [管理附件} 按钮将图像文件直接上传到回复帖子中.打开的对话框的上半部分将允许您浏览并上传计算机中的文件.

至于直接回答问题:

>通常我们要求每个线程一个问题;然而,对我来说,我会给你"主题变奏曲".两个问题的解决方案"

单击该按钮时,应弹出一个具有相同 4 个选项卡的新表单,所有控件为空以填充数据.
+ 这似乎真的是一个不必要的并发症.你有什么理由不能允许在当前表单中直接创建新记录?
-- 相关选项是"数据输入"中当前绑定表单的新实例;模式,这是我的首选方法.我通常会以数据输入模式、对话框视图状态和模态打开表单的新实例,因此调用代码将暂停,直到表单关闭;一旦关闭数据输入表单,调用代码就可以继续并调用 Requery.使用 Tempvars 集合,如果使用表单事件之一(on_Close 或 after_update 取决于情况)创建了新条目,并且主表单可以移动到该记录,则可以使用新条目的主键设置一个值,或者如果某些值(例如 -1),则简单地不理会.

这里的好处是你只需要一个表单和一组代码/查询来维护任何业务规则.

+ 另一种选择是使用未绑定的表单(或绑定和未绑定控件和子表单的混合),其中包含新记录所需的控件.这需要大量的 VBA 才能使此方法可靠地工作.您对 VBA 的熟悉程度如何?我第一次这样做时,我花了几个月的时间才让一切正常工作 - 我在编程方面有相当扎实的基础.

与编辑按钮相同,只是应显示所选记录,等待更改.
同样,这似乎是一个不必要的并发症.记录已显示在表单中 - 为什么不允许在此表单中进行编辑?我有几种表格,当第一次打开的编辑被锁定时.我有一个可以切换状态的命令按钮(老实说,我经常使用切换按钮和表单的 before_update 事件检查此控件状态是否为"True",并允许记录保存或取消更新).

如果您真的想要一个新表单,那么再次,您应该考虑打开当前表单的新实例并设置过滤器,以便仅显示具有相关项目主键的记录.

再有,如我之前提到的"新记录"的未绑定/混合形式的选项.您可以打开此表单的实例并将值单独传递给控件,​​方法是设置调用 VBA 中的值或传递 form.openarg 属性中的值并从 on_load 事件中的字符串解析这些值

>对于上述任何选项,您可以将它们作为模式打开,这将暂停调用代码,或者您可以设置自定义事件(不适用于新的 VBA 程序),您可以使用它来触发表单更新等...

希望能帮助您为每个问题选择一个方向.

Hi Steph.

你想要的几乎是不可能的.可以通过忽略 Access 正常工作的方式并构建一组非常复杂的数组来将所有数据保存在从根本上反映您的表结构的未绑定控件中来完成,但这将是许多令人讨厌的级别.

如果不需要每个链接表的多个记录(我说的是具有多个详细信息行的整体发票之类的东西.)那么可以使用多个页面(选项卡)构建一个表单并绑定到一个复杂的 QueryDef 以受支持的方式将所有必需的表加入,但在我看来,所有表都仅限于一条记录的限制在大多数情况下完全不切实际.

您可能已经知道,但标准的访问方式是您可以拥有一个包含多个子表单的表单,其中每个子表单处理不同的表,并且每当您离开子表单时,记录总是保存到磁盘.在我知道之后,你并不完全是这样,但在我看来,替代方案是极端的.足以让在 Access 中设计它几乎毫无意义,因为您将失去 Access 必须提供的最有价值的好处.就 RAD(快速应用程序开发)而言,那些将 Access 与其他领域区分开来的人.

无论如何,祝你好运:-)

你好,

非常感谢你们的帮助.首先,我没有任何编程背景,这就是为什么我会遵循建议并使用我拥有的表格.

所以我现在的前进方式是锁定和禁用控件并通过按钮"添加"解锁和启用它们.和"编辑".

这样做时,我在创建一个我不理解的新记录时出现错误:

我有一个主窗体,其中有一个带有 4 个页面和子窗体的选项卡控件以及数据表视图中的另一个子窗体(请参见随附的屏幕截图 1).


在选项卡控制页面中,我显示与在 frmProject_list 中选择的 ID 相关的不同信息.因此,我在主窗体的 Header 中有一个不可见的 TextBox.

单击"添加"按钮时,我设法转到子表单 frmProject_list 中的新记录.然后将其标题更改为"保存".但是当我开始输入信息时,我得到了屏幕截图1中显示的错误(你不能给这个对象赋值).


谁能帮我解决这个问题?

(frmProject_list 没有主/子链接,选项卡控件中的子窗体具有到主窗体 Header 中的 TextBox 的链接,通过 frmProject_details 完成数据输入,其中 Record Source 是可更新的查询 - 参见屏幕截图 2)


非常感谢你!
附加图片
文件类型:jpg ScreenshotAccessForm1.jpg (164.9 KB, 65 次查看)
文件类型:jpg ScreenshotAccessForm2.jpg(148.1 KB,63 次浏览)

本文地址:https://www.itbaoku.cn/post/1050692.html