首页 > 解决方案 > 为什么 VBA 的 Recordset 只返回一条记录?

问题描述

我有 3 个表,“persons”、“per_resi”和“residence” 这三个表形成了多对多关系。

表“人”字段:id、name 等....

表“住所”字段:id、Street 等......

表“per_resi”字段:person_id 和 Residence_id(以及主索引)

好吧,问题是当我在图形访问工具中设计查询时,它应该可以正常工作。

在此处输入图像描述

但如果我在 VBA 中这样做,它只会返回 1 条记录。

Dim svivienda As String
Dim rvivienda As Recordset

svivienda = "SELECT tbl_persona.Id, tbl_vivienda.Calle, tbl_vivienda.Numero " _
          & "FROM tbl_vivienda INNER JOIN (tbl_persona INNER JOIN tbl_perso_viv ON tbl_persona.Id = tbl_perso_viv.Id_persona) " _
          & "ON tbl_vivienda.Id = tbl_perso_viv.Id_vivienda WHERE tbl_persona.Id = " & 168 & ";"

Set rvivienda = CurrentDb.OpenRecordset(svivienda, dbOpenDynaset)

我尝试过左连接和右连接,但在记录集上总是只有一条记录。

有任何想法吗?

微软访问 2013

提前致谢。

标签: vbams-access

解决方案


谢谢各位,

这是一个非常新颖的问题。

这是答案。

RecordCount 属性不报告您拥有的记录数量。

RecordCount 属性的值等于实际访问的记录数。例如,当您第一次创建动态集或快照时,您只访问(或访问)了一条记录。如果在创建动态集或快照后立即检查 RecordCount 属性(假设它至少有一条记录),则值为 1。要访问所有记录,请在打开 Recordset 后立即使用 MoveLast 方法,然后使用 MoveFirst 返回到第一条记录。这不是自动完成的,因为它可能很慢,尤其是对于大型结果集。

计算 DAO 记录集中的记录数

谢谢!!!


推荐阅读