从单一表单Access数据库向多个表添加数据

时间:2015-08-28 13:59:17

标签: ms-access access-vba ms-access-2010

我有一个连续的表单,它将根据表单标题中的组合框过滤表。到目前为止,所有内容都通过一种形式运行,没有子表单。我希望允许用户编辑现有记录以及添加新记录。编辑似乎没有引起任何问题,它正在尝试添加新记录。

我在一段时间之后问过这个问题,让一切都正常化,花花公子。为了在一个地方将所有信息放在一起,我使用了查询,但是无法通过查询编辑记录,所以我只根据结果制作了一个表。当子表单基于查询但是不起作用时,我尝试通过子表单编辑数据。自从我创建了包含查询结果的表以来,没有尝试过。

基本上问题是我无法添加记录,例如全新的供应商,因为供应商已经不存在于表中。我需要将数据添加到多个表(供应商,供应商代码,联系信息,来自前3的所有信息)。真正不需要添加任何东西的是联系人类型表。

我在某个地方读到了需要这样的事情发生的糟糕结构,但如果一切都需要规范化似乎是矛盾的。
https://social.msdn.microsoft.com/Forums/Lync/en-US/3877ce6a-34d9-4732-9af3-4c2704e50a62/adding-data-to-multiple-tables-using-one-form-in-access-2010?forum=accessdev

Show All Records For Given Field Filter In Access 2010 Table

我之前没有考虑过的是更新查询。这会适用于这种情况吗?我之前没有使用过,但我总是愿意学习新东西。唯一的问题是我对SQL不熟悉,但如果有必要会使用它,如果有的话,最好使用VBA。

修改

SELECT tblSuppliers.Supplier, 
       tblSupplierCodes.[Supplier Code], 
       tblContactType.Type, 
       tblContactInfo.[Contact Name],  
       tblContactInfo.[Contact Email]

FROM (tblSuppliers INNER JOIN tblSupplierCodes ON 
     tblSuppliers.ID = tblSupplierCodes.[Supplier ID]) 
     INNER JOIN (tblContactType INNER JOIN tblContactInfo ON 
     tblContactType.TypeID = tblContactInfo.TypeID) ON 
     tblSuppliers.ID = tblContactInfo.SupplierID

WHERE (((tblSuppliers.Supplier)=[Forms]![frmContacts]![cboChooseSupplier])) OR ((([Forms]![frmContacts]![cboChooseSupplier]) Is Null))

ORDER BY tblContactType.Type, tblContactInfo.[Contact Name];

1 个答案:

答案 0 :(得分:0)

  

但是无法通过查询编辑记录

这是一种误解。具有格式良好的内部联接的查询是可更新的。 1:n关系的“1”面必须是主键。

您的查询还有其他可能的原因是只读,请参阅http://allenbrowne.com/ser-61.htmlhttp://www.fmsinc.com/Microsoftaccess/query/non-updateable/index.html

您的查询中不能包含GROUP BY,DISTINCT,UNION或OUTER JOIN。

如果您没有找到原因,请发布您的SQL,以便我们查看。

相关问题