当涉及3个表时,在表单中创建新记录

时间:2012-04-18 00:18:10

标签: ms-access ms-access-2010

我创建了一个显示用户详细信息的表单,数据已分为三个表(table1,table2,table3) table1有foriegn键来链接到其他表中的数据

当只插入table1时,默认的上一个,下一个和新的记录选择器工作正常。但是,在插入其他两个表后,表单无法创建新记录。

我相信它是因为table2和table3正试图链接到table1中的foriegn键。

当按下“新记录”时,它会返回“你无法转到指定的记录。”

2 个答案:

答案 0 :(得分:1)

正如一位用户已经指出的那样,存储过程(如果可用)绝对是制作多表条目和编辑的首选方式。它基本上是一个事务,事务通常允许您在遇到错误时回滚。

Access 2010 has stored procedure capabilities内置于数据库引擎中,但Access的早期版本没有。其他流行的数据库服务器(如SQL Server和MySQL)也具有存储过程功能。要在其中一个数据库中运行/调用存储过程,您必须使用Pass Through Query或者使用ADO。

Access在表单级别上有一个选项可将Recordset类型更改为动态不一致更新。这允许表单忽略查询中作为记录集基础的关系,但仍然可以遵守在关系窗口中定义的任何关系。你可以在这里看到关于它的讨论:http://www.utteraccess.com/forum/Dynaset-Inconsistent-Upd-t1664392.html

正如在讨论中指出的那样,我还设计了我的数据输入表单,这样即使我使用查询,它们也只构建在一个表上。然后,我将子表单用于相关表中的数据。我认为这是MS Access中的标准设计实践。在.NET等环境中设计的软件更容易违反这一点,因为通常开发人员必须为所有CRUD操作编写代码。这为开发人员提供了更大的灵活性。

答案 1 :(得分:0)

我不确定您使用的控件是什么,但我仍然建议为crud操作编写存储过程。这是更新多个表的好方法