级联参数未按预期工作
Posted
技术标签:
【中文标题】级联参数未按预期工作【英文标题】:Cascading parameters not working as expected 【发布时间】:2016-04-27 16:06:22 【问题描述】:我有一个包含 4 个参数的报表,需要在报表打开时自动填充这些参数。
2 个参数工作正常,但 Lecturer 参数没有选择任何值。
查询:
Year:
SELECT REGT_Year
FROM CurrentAttendance_New
CourseType:
SELECT DISTINCT CourseType
FROM CurrentAttendance_New
WHERE (REGT_Year = @Year)
Lecturer:
SELECT DISTINCT LectName
FROM CurrentAttendance_New
WHERE (CourseType IN (@CourseType))
ORDER BY LectName
Register:
SELECT DISTINCT Class_Register COLLATE
DATABASE_DEFAULT + ' - ' + Register_Title
COLLATE DATABASE_DEFAULT + ' - ' +
Register_Day COLLATE DATABASE_DEFAULT + ' ' +
CONVERT(char(5),StartTime, 108) + ' - '
+ CONVERT(char(5), EndTime, 108) AS Register
FROM CurrentAttendance_New
WHERE (REGT_Year = @Year)
AND (CourseType IN (@CourseType))
AND (LectName IN (@Lecturer)) (LectName IN (@Lecturer))
知道我哪里出错了吗?
【问题讨论】:
如果它们被填充但没有被选中,那么请添加一个默认值。 @Roberto - 是的,我在所有参数中添加默认值.. 能否验证查询返回的数据集中是否存在默认值? 您好,如果您仍然遇到此问题。您能否验证Lecturer
数据集不返回 NULL 值? NULL 值可以阻止它选择默认值。
我只能说尝试的另一件事是检查参数和数据集的顺序。意思是,确保您的参数按Year, CourseType, Lecturer, Register
排序,并且数据集按相同的顺序制作。在您的第一个屏幕截图中,我看到 Lecturer
数据集在 CourseType
之前。
【参考方案1】:
这里的问题是,在您的 Lecturer 查询中,您使用的是“in”语句,但您传递给它的是一个不存在的值字符串(您可能正在加入参数的值) )。一种选择是使用拆分函数将所有课程类型传递给它。这可以在查询中完成,也可以作为 DataSet 过滤器完成。如果您搜索,那里有几篇帖子,但这至少应该为您指明正确的方向。
【讨论】:
以上是关于级联参数未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章