我有点失落与这一个。我有一个子窗体,显示基于我的组合框选择的记录。这是这样完成的(代码是从组合框After_Update叫):访问 - 报告显示子表单结果(加入表)
:Sub ShowResults1()
With Forms![MYForm].RecordsetClone
.FindFirst "[ID] = " & Forms![MyForm]![CmbSearch]
If Not .NoMatch Then
If Forms![MyForm].Dirty Then Forms![MyForm].Dirty = False
Forms![MyForm].MySubfom.SourceObject = "MySubform"
Forms![MyForm].Bookmark = .Bookmark
End If
End With
End Sub
主窗体绑定到一个连接表,这是它的记录源(它是通过在它的ID连接到2台)
SELECT JoinTable.*, Table1.IDx AS IDx_Table1, Table1.Field1, Table1.Field2, Table1.Field3, Table2.IDy AS IDy_Table2, Table2.Field1, Table2.Field2, Table2.Field3
FROM Table2 INNER JOIN (Table1 INNER JOIN JoinTable ON Table1.IDx = JoinTable.IDx) ON Table2.IDy = JoinTable.IDy;
当执行上层代码时,我得到了符合条件的子窗体中的结果,所以这工作正常。
现在,我想要的是有一个报告,这将显示确切地显示子窗体allready显示。这太复杂了,还是有任何简单的解决方案?
编辑:
我创建了一个新的查询(名为 “SearchReport”):
SELECT Table2.IDy, Table2.Field1, Table2.Field3
FROM Table2 INNER JOIN (Table1 INNER JOIN Join_Table ON Table1.IDx = JoinTable.IDx) ON Table2.IDy = JoinTable.IDy
WHERE JoinTable.IDy=3;
该查询成功地表明,我想记录,但只有ID 3.现在我删除了“WHERE JoinTable.IDy = 3“,以便我可以显示基于我的组合框的记录。这就是我试图打开的报告:
DoCmd.OpenReport "MyReport", acViewReport, "SearchReport", WhereCondition:="JoinTable.IDy =" & Forms![MyForm]![CmbSearch]
但是当报告打开时,Access不断询问输入IDy的参数值。即使我输入3,也会显示该查询中的所有记录。哪里不对 ??
你会使用相同的源报表作为子表单 –
我做不到该子窗体不在任何可用记录源下列出。我相信,因为子窗体的记录源基于查询(来自JoinTable和Table1)。请看看我的编辑,我认为我在正确的道路上。 – LuckyLuke82
try,DoCmd.OpenReport“SearchReport”,acViewPreview ,,“idy =”&Forms![MyForm]![CmbSearch]并移除WHERE JoinTable.IDy = 3;从查询 – nazark