我有一个列表框,该列表框使用两个不同的表来获取列表数据(tblWorkOrder
和tblCustomers
)。数据本身全部来自tblCustomers
,但是tblWorkOrder
只是为了过滤列表中在tblWorkOrder
中没有条目的所有项目。这是SQL以防万一:
SELECT DISTINCT tblCustomers.ID, [FName] & " " & [LName] AS FullName
FROM tblCustomers RIGHT JOIN tblWorkOrder ON tblCustomers.ID = tblWorkOrder.CustomerID;
双击的事件过程在这里:
Private Sub lstCustomers_DblClick(Cancel As Integer)
DoCmd.OpenReport "rptCustomers", acViewPreview, , "[tblWorkOrder].[ID] = " & Forms("frmReports")("lstCustomers").Value, acNormal
End Sub
我最初遇到的问题是,字段[ID]
引用了两个表,并且可能意味着其中一个表。因此,我添加了[tblWorkOrder]
来描述报告所引用的表。我很确定这是我搞砸的地方,但是由于很难引用表单控件,因此我不确定如何引用它。
编辑:这是rptCustomers
的SQL:
SELECT tblWorkOrder.Task, [FName] & [LName] AS FullName, tblCustomers.Company, tblCustomers.Email, tblCustomers.ContactPhone, tblCustomers.Address, [City] & ", " & [State] AS CityState, tblCustomers.ZipCode, tblCustomers.Country, tblCustomers.Notes, tblCustomers.ID, "WD0" & [tblWorkOrder]![ID] AS WONumber, tblWorkOrder.ID
FROM tblCustomers RIGHT JOIN tblWorkOrder ON tblCustomers.[ID] = tblWorkOrder.[CustomerID];
答案 0 :(得分:2)
控件引用没有问题,但是引用了错误的字段。列表框的BoundColumn是tblCustomers.ID,但报表过滤条件引用了tblWorkOrder.ID。应该是tblCustomers.ID,或者如果报表RecordSource包含tblWorkOrder和CustomerID字段,则可以使用tblWorkOrder.CustomerID或仅使用CustomerID。
列表框引用可能更简单:Me.lstCustomers
"tblCustomers.ID = " & Me.lstCustomers
尽管从未有过比赛,这似乎很奇怪。 tblWorkOrder.ID为2仍应与lstCustomers值为2匹配,只是不会成为所需的记录。