Ms access Access 2010-在报告中输入参数值,但不在查询中输入

Ms access Access 2010-在报告中输入参数值,但不在查询中输入,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我正在使用Access 2010,通过子窗体上的各种控件从用户处提取信息,动态创建字符串过滤器。然后,我以以下两种方式之一使用过滤器: 我在“数据表”视图中设置了另一个子窗体的记录源 Forms![frmCentral]![TrainingEventsSubform].Form.RecordSource = gstrTrainingEventsFormFilter 或者我使用它作为openreport的查询参数 DoCmd.OpenReport "rptTrainingEvents",

我正在使用Access 2010,通过子窗体上的各种控件从用户处提取信息,动态创建字符串过滤器。然后,我以以下两种方式之一使用过滤器:

我在“数据表”视图中设置了另一个子窗体的记录源

Forms![frmCentral]![TrainingEventsSubform].Form.RecordSource =
gstrTrainingEventsFormFilter

或者我使用它作为openreport的查询参数

    DoCmd.OpenReport "rptTrainingEvents", acViewPreview, gstrTrainingEventsFormFilter
我不明白为什么,但是在设置recordsource时查询字符串可以正常工作,但是在发出openreport命令时,完全相同的字符串将导致出现一个输入参数值框。此外,如果我将查询粘贴到报表的recordsource参数中,则查询可以完美工作

例如,下面是一个生成的字符串:

SELECT TrainingEvents.StartDate, TrainingEvents.EndDate, ClassList.ClassNumber, [Users].[FirstName] & ' ' & [Users].[LastName] AS Trainer, TrainingLocations.TrainingLocationName, EventVenues.EventVenueName, TrainingEventStatus.TrainingEventStatus, TrainingEvents.TrainingEventID
FROM Users INNER JOIN (TrainingLocations INNER JOIN (TrainingEventStatus INNER JOIN (EventVenues INNER JOIN (ClassList INNER JOIN TrainingEvents ON ClassList.ClassID = TrainingEvents.ClassID) ON EventVenues.EventVenueID = TrainingEvents.EventVenueID) ON TrainingEventStatus.TrainingEventStatusID = TrainingEvents.EventStatusID) ON TrainingLocations.TrainingLocationID = TrainingEvents.TrainingLocationID) ON Users.UserID = TrainingEvents.TrainerID
WHERE (TrainingEvents.StartDate >= #1/1/2014#) AND (TrainingEvents.EndDate <= #12/31/2014#) AND (Users.UserID = 10)
ORDER BY TrainingEvents.StartDate;
此时将显示“输入参数值”框,其中包含Users.UserID

这显然是与userid有关的东西,但就我而言,我不明白是什么


有什么建议吗?

您的报告中似乎在某处使用了UserID,但select子句中没有包含它。试着把它包括进去。就是这样-谢谢!!!!!!!我还必须在报告的RecordSource中更改它。我不明白为什么它适用于表单,而不适用于报告。似乎前后矛盾。尽管底线是查询字符串的构造不正确。再次感谢,非常感谢。会盯着它看上几个小时却不明白。