Ms-access 中的一个查询
Posted
技术标签:
【中文标题】Ms-access 中的一个查询【英文标题】:A Query in Ms-access 【发布时间】:2010-09-13 14:35:54 【问题描述】:此查询显示事件类型不等于“PNremoved FROM Wrapper”的零件号。此查询显示正确的数据。零件号可能会从此跟踪号中删除,但可以使用另一个跟踪号输入。在这种情况下,它不起作用。
我希望当我们输入相同的零件号和另一个跟踪号时查询有效。
部件号不应与我们使用 eventtype= "pn Removed from wrapper" 的跟踪号一起显示。但它应该与具有相同部件号的另一个跟踪号一起显示。
SELECT
tblRevRelLog_Detail.RevRelTrackingNumber,
tblRevRelLog_Detail.PartNumber,
tblRevRelLog_Detail.ChangeLevel,
tblRevRelLog_Detail.Version,
tblRevRelLog_Detail.JobPnType,
tblRevRelLog_Detail.EdsName,
tblRevRelLog_Detail.DetailerNamePerPartNumber,
tblRevRelLog_Detail.DetailerCompanyPerPartNumber
FROM
tblRevRelLog_Detail LEFT JOIN tblEventLog
ON tblRevRelLog_Detail.PartNumber = tblEventLog.PartNumber
WHERE
tblEventLog.PartNumber Not In (
SELECT tblEventLog.PartNumber
FROM tblEventLog
WHERE tblEventLog.EventTypeSelected = 'pn REMOVED From Wrapper')
ORDER BY
tblRevRelLog_Detail.PartNumber;
我通过一个例子来展示这一点。
Reviewrelease_Form(主表单)链接到reviewreleasetable:
此表包含基本数据和包装编号
包装器编号:测试
RevRel_Form(子表单) 链接到 tblRevRelLog_Detail
此表格包含有关零件编号的数据
零件编号 chnglvl jobpntype 工程师名称 公司版本 8765 1 XXXX XXXXXX XXXX xxxx 9898 0 xxxx xxxx xxxx xxxx 7889 2 xxxx xxxxx xxxx xxxxeventhistory(子表单) 链接到 tblEventLog
此表单包含带有部件号的事件
eventdate partnum eventtype errortype errorsubtype 注释 xxxxx 8765 1-接收新的 xxxx xxxx xxxxx xxxx 9898 1-收到新的 xxxx xxxx xxxxxx xxxx 7889 1-接收新的 xxxx xxxx xxxx xxxx 8765 2-分配 xxxx xxx xxx xxx 9898 3 个错误 xxxx xxxx xxxx如果我想从包装中删除一个零件编号,我将删除并且事件历史表如下所示
eventdate partnum eventtype errortype errorsubtype 注释 xxxxx 8765 1-接收新的 xxxx xxxx xxxxx xxxx 9898 1-收到新的 xxxx xxxx xxxxxx xxxx 7889 1-接收新的 xxxx xxxx xxxx xxxx 8765 2-分配 xxxx xxx xxx xxx 9898 3 个错误 xxxx xxxx xxxx xxx 9898 'pn 已移除....' xxx xxx xxxx那么 RevRel_Form 不应该显示这个 partnumber 数据如下:
零件编号 chnglvl jobpntype 工程师名称 公司版本 8765 1 XXXX XXXXXX XXXX xxxx 7889 2 xxxx xxxxx xxxx xxxx这适用于我在 RevRel_form 的数据源中编写的查询(我在上面编写的查询)。
但问题是,将来删除的零件编号会再次出现另一个新的包装编号。使用我现在使用的查询,它也不会显示带有新包装器编号的零件编号数据。
所以,我想要在 RevRel_Form 中使用新包装器编号显示零件编号数据的查询。但不是我们删除该零件编号的包装编号。
如果您看不到格式正确的记录,请在编辑视图中查看它们。
【问题讨论】:
我还是完全不明白这个问题。向我们展示您拥有的数据以及您想要从查询中获得的数据。 【参考方案1】:需要添加对包装器的引用,例如:
WHERE
tblEventLog.wrapper = 'wrapper id'
AND tblEventLog.EventTypeSelected <> 'pn REMOVED From Wrapper'
如果事件日志不包含包装器ID,我认为您有设计问题,因为这些事件显然适用于特定包装器。
【讨论】:
Wrapper Id 只不过是..trackingnumber。同一包装中的零件编号将使用相同的跟踪编号保存。因此,每个零件号都将保存为记录,因此跟踪号对他们来说是通用的。 tblEventLog.Wrapper = 'wrapper id' 中的'wrapper' 是什么 如何识别“pn REMOVED From Wrapper”属于哪个包装器?如果是tracking number,那么wrapper id=tracking number。以上是关于Ms-access 中的一个查询的主要内容,如果未能解决你的问题,请参考以下文章
为啥 MS-Access 中的 Teradata 查询比 SQL Server 更快
使用 c# 和 oledb 查询更新 Ms-Access 2010 中的列值