选择其他字段中的计数匹配的项目(不可更新)

时间:2016-02-08 19:44:01

标签: sql ms-access

这里我试图获取我的产品的记录,其中主表中的#swab位置与拭子表中的拭子位置数相匹配,用户可以检查Y / N以验证位置的描述是否正确

以下是我的2个表的示例。

tblMainEquipment
Asset_ID   EquipmentName Num_SwapLocations Verified
234        Saijimon      2                 N
235        Pasquale      3                 N

tblMainSwapLocations
Asset_ID   Swap_location 
234        Particle Cannon
234        RailGun
235        Particle Cannon

我使用以下查询来计算记录数,我避免使用有查询来组合两个表,因为它不可更新。

qryMainSwapLocationCount    
SELECT MSL.Asset_ID, Count(Asset_ID) AS [Count]
FROM tblMainSwapLocation AS MSL
GROUP BY MSL.Asset_ID;

这会给我

的结果
qryMainSwapLocationCount
Asset_ID   count
234        2
234        1

我使用以下内容作为表单的记录源,以允许用户验证输入。

SELECT MEQ.Asset_ID, MEQ.Equipment_Name,MEQ.Num_swapLocations MEQ.Verified
FROM tblMainEquipment AS MEQ, qryMainSwapLocationCount AS MSLC
WHERE (((MEQ.Asset_ID)=[MSLC].[Asset_ID]) AND ((MEQ.Num_SwapLocations)=[MSLC].[Count]);

这个结果将是

tblMainEquipment
Asset_ID   EquipmentName Num_SwapLocations Verified
234        Saijimon      2                 N

但是此记录集不可编辑。这有什么理由吗?

1 个答案:

答案 0 :(得分:2)

我认为你应该将你的表 tblMainEquipment 作为你的记录源并将其中的所有字段带到你的表单上:

enter image description here

然后插入未绑定的文本框(可能靠近 Num_SwapLocations 字段以便于比较):

enter image description here

然后在这个新文本框中,将以下内容放在ControlSource中:

=DCount("ASSET_ID","tblMainSwapLocations","ASSET_ID=" & [Asset_ID])

enter image description here

然后打开您的表单,它应该计算表 tblMainSwapLocations 中与当前显示的记录具有相同 Asset_ID 的记录数:

enter image description here

然后,您就可以更新 tblMainEquipment 表中的已验证字段。