我有一个连续的表单,它将根据表单标题中的组合框过滤表。到目前为止,所有内容都通过一种形式运行,没有子表单。我希望允许用户编辑现有记录以及添加新记录。编辑似乎没有引起任何问题,它正在尝试添加新记录。
我在一段时间之后问过这个问题,让一切都正常化,花花公子。为了在一个地方将所有信息放在一起,我使用了查询,但是无法通过查询编辑记录,所以我只根据结果制作了一个表。当子表单基于查询但是不起作用时,我尝试通过子表单编辑数据。自从我创建了包含查询结果的表以来,没有尝试过。
基本上问题是我无法添加记录,例如全新的供应商,因为供应商已经不存在于表中。我需要将数据添加到多个表(供应商,供应商代码,联系信息,来自前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];
答案 0 :(得分:0)
但是无法通过查询编辑记录
这是一种误解。具有格式良好的内部联接的查询是可更新的。 1:n关系的“1”面必须是主键。
您的查询还有其他可能的原因是只读,请参阅http://allenbrowne.com/ser-61.html或http://www.fmsinc.com/Microsoftaccess/query/non-updateable/index.html
您的查询中不能包含GROUP BY,DISTINCT,UNION或OUTER JOIN。
如果您没有找到原因,请发布您的SQL,以便我们查看。