级联参数未按预期工作

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 过滤器完成。如果您搜索,那里有几篇帖子,但这至少应该为您指明正确的方向。

【讨论】:

以上是关于级联参数未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

可变宏参数计数未按预期工作

C中的电源功能未按预期工作

XSLT - 使用隧道传递变量未按预期工作

RandomizedSearchCV 的 best_params 未按预期显示输出

Angular ngOnit () 未按预期工作

$() 函数未按预期工作