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 xxxx

eventhistory(子表单) 链接到 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 中的日期条件进行拉取

为啥 MS-Access 中的 Teradata 查询比 SQL Server 更快

使用 c# 和 oledb 查询更新 Ms-Access 2010 中的列值

从 MS-Access 中联合选择查询中的 SQLite 语法错误

如何在 VBA 代码中的 ms-access 中执行查询?

对于我的以下要求,MS-Access 中的查询是啥?