【问题标题】:Error 3021 using subqueries in MS Access在 MS Access 中使用子查询时出现错误 3021
【发布时间】:2013-10-01 03:17:37
【问题描述】:

当我使用子查询作为变量之一运行查询时,我收到错误 3021(“未找到当前记录”,但可以找到记录)。

代码如下:

SELECT thefieldsiwant, etc.etc., 

(SELECT directory.person_name FROM directory INNER JOIN doc ON doc.entity_to=directory.entity_id) AS receiver,

(SELECT directory.person_name FROM directory INNER JOIN doc ON doc.entity_from=directory.entity_id) AS sender

FROM doc;

entity_id 是表“目录”的主键。

entity_to 和 entity_from 是表“doc”的外键。

基本上,如果他是文档的发件人(以及另一个人的姓名作为文档的接收者),我只是希望显示该人的姓名,而不是这两个特定人的 ID。

【问题讨论】:

  • 您可能无法阻止错误 - 这是一个常见错误。如果你不能阻止它,你可以使用错误处理来捕获它。发回有关发生错误的表单和事件的更多详细信息。
  • 嗨,SeeSharp,当我加载表单本身(或者甚至只是查询本身)时,就会发生该事件。我一直在 SQL 查看器上运行这段代码,所以它与表单事件并不真正相关。

标签: ms-access subquery


【解决方案1】:

尝试将所有内容都放入 FROM 中,如下面的代码。此外,如果您使用以下某些代码,则应确保如果 SELECT 列之一为 NULL,则 Access 返回一个替换值:

select  doc.documentname, 
        reciever.person_name, 
        sender.person_name 
from 
doc 
LEFT JOIN
    ((SELECT directory.person_name, doc.entity_to FROM directory INNER JOIN doc ON doc.entity_to=directory.entity_id) AS receiver on doc.entity_to = receiver.entity_to)
LEFT JOIN   
    ((SELECT directory.person_name, doc.entity_from FROM directory INNER JOIN doc ON doc.entity_from=directory.entity_id) AS sender on doc.entity_from = sender.entity_from)
where dir.entity_id = '[enter id for user]'

【讨论】:

  • 我试过这个:SELECT docfieldswhatever, receiver.person_name, sender.person_name FROM (( doc INNER JOIN (SELECT directory.person_name, directory.company_name, directory.entity_id FROM directory INNER JOIN doc ON directory.entity_id =doc.entity_to) 作为接收者在 doc.entity_to=receiver.entity_id ) INNER JOIN (SELECT directory.person_name, directory.company_name, directory.entity_id FROM directory INNER JOIN doc ON directory.entity_id=doc.entity_to) 作为发送者在 doc。 entity_from=sender.entity_id );但有些条目会重复。
  • 基本上我只是想要一个查询,它会在给定文档中每条记录的人员 ID 的情况下从目录中进行 dlookup 之类的操作。
  • 我试图避免必须通过表单进行 dlookup,但这就是我只使用 SQL 语句的原因。 :(
  • 知道了!谢谢格雷格琼斯!我刚刚删除了 WHERE 子句,将 DISTINCT 添加到 doc.documentname,并在子查询中将 INNER JOIN 替换为 RIGHT JOIN。花了我4个小时哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多