【问题标题】:Display Only Unique Records in Left Table of 1:M Join in Access 2010Access 2010 中 1:M Join 的左表中仅显示唯一记录
【发布时间】:2013-02-05 16:55:52
【问题描述】:

我有一个属性表、一个土地所有者表和一个将它们关联起来的链接表。财产和土地所有者之间的关系是一对多的。我想使用一个查询来构建一个数据表视图,该视图显示连接到每个属性的土地所有者。我已经成功地让 LEFT JOIN 工作,但我更愿意在结果中只显示左表中的唯一记录(可接受空白单元格中的空值)。

当前结果:


PID       OWNERID
 1           32
 1           23
 2           45
 2           18
 2           12
 3           98
 3           12
 3           23

想要的结果:


PID       OWNERID
 1           32
             23
 2           45
             18
             12
 3           98
             12
             23

这可能吗?

【问题讨论】:

  • 这不是 sql 问题,而是演示问题。你打算在哪里展示结果?表单?一份报告?在哪个版本的 MS Access 中?
  • Access 2010(在标题中)。演示文稿是一个数据表/表格视图 - 这是一个由访问中的查询填充的表单(需要保持排序能力等)。

标签: join ms-access


【解决方案1】:

我对此不太满意,因为我认为报告会更适合这种类型的展示,但这是一个想法。你只会减少排序的能力。 PID 必须始终是第一个排序字段,否则它没有意义。

你需要一个文本框:

=getposition([pid])

一些代码

Function getposition(pos)
    ''Set rs = Screen.ActiveForm.RecordsetClone
    Set rs = Forms!NameOfFormHere.RecordsetClone
    rs.FindFirst "pid=" & Nz(pos, 0)
    getposition = rs!ownerid
End Function

和条件格式:

【讨论】:

  • 我不确定这是如何工作的。据我了解,该函数检查特定 PID 单元格值的行是否与表中特定 PID 的第一次出现的行匹配 - 如果不是,则单元格不显示?代码去哪儿了?为什么需要一个文本框?
  • 代码放在任何模块中。文本框是有条件格式检查的东西。
  • 我在项目中添加了一个模块并将上面的代码粘贴在其中。我通过调用该函数在表单中添加了一个文本框。我收到一个错误:“您输入的引用是对 RecordsetClone 属性的无效引用”。
  • 代码是一种方法的草图,将引用从 Screen.ActiveForm 更改为您的表单名称,如上所示。
  • 顺便说一句,我不确定你是否应该这样做,因为我相信你失去的远比得到的多。
猜你喜欢
  • 1970-01-01
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 2015-09-12
相关资源
最近更新 更多