2012-04-18 71 views
1

我已经创建了一个显示用户详细信息的表单,数据已被分成三个表(table1,table2,table3) table1有foriegn键链接到其他表格当涉及3个表时,在表单中创建新记录

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

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

当按下“新记录”时,它返回一个“你不能去指定的记录。”

回答

1

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

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

访问在表单级别上有一个选项可以将您的Recordset Type更改为Dynaset Inconsistent Updates。这允许表单忽略查询中的关系,这是您记录集的基础,但您的关系窗口中定义的任何关系仍将受到尊重。你可以看到一个讨论,在这里:http://www.utteraccess.com/forum/Dynaset-Inconsistent-Upd-t1664392.html

正如在讨论中指出,我还设计我的数据录入表格,以便它们是建立在只即使我使用查询单个表。然后,我使用子表单处理相关表中的数据。我认为这在MS Access中是非常标准的设计实践。在.NET等环境中设计的软件可能更容易违反此规定,因为开发人员通常不得不为所有CRUD操作编写代码。这给开发者更大的灵活性。

+0

谢谢!那就是我正在寻找的东西。 – Imran 2012-04-19 00:01:22

0

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