如何将报表生成器中的参数传递给Firebird数据库?

时间:2018-12-05 20:31:09

标签: sql reporting-services parameters firebird reportbuilder

我正在考虑为我们的一种Training软件做一些报告开发。终于有了一些查询,他们在FB Maestro中工作了,因为我只熟悉SQL和Oracle。

我有以下查询可以运行并返回结果,但是当尝试为显示名称设置参数时,查询将运行(至少它不返回错误),但是数据集不返回任何数据。以前有没有人使用过这些?

以下是查询:

Select CertStatus, DisplayName, Count(CertStatus) From ( With cte as (Select * From (Select COURSEVERSIONSWITHAGGREGATES.CourseTitle, COURSEVERSIONSWITHAGGREGATES.CourseNumber, "MaxTrainedCompletionDate", "Course_ID", PersonnelView.DISPLAYNAME, COURSEVERSIONSWITHAGGREGATES.RecertificationValue, COURSEVERSIONSWITHAGGREGATES.RECERTIFICATIONUNIT_ID,


CASE
    WHEN COURSEVERSIONSWITHAGGREGATES.RECERTIFICATIONUNIT_ID = 3 THEN DATEADD(year, 1*COURSEVERSIONSWITHAGGREGATES.RECERTIFICATIONVALUE, MaxTrainingView."MaxTrainedCompletionDate")
    WHEN COURSEVERSIONSWITHAGGREGATES.RECERTIFICATIONUNIT_ID = 2 THEN DATEADD(month, 1*COURSEVERSIONSWITHAGGREGATES.RECERTIFICATIONVALUE, MaxTrainingView."MaxTrainedCompletionDate")
    WHEN COURSEVERSIONSWITHAGGREGATES.RECERTIFICATIONUNIT_ID = 1 THEN DATEADD(week, 1*COURSEVERSIONSWITHAGGREGATES.RECERTIFICATIONVALUE, MaxTrainingView."MaxTrainedCompletionDate")
    WHEN COURSEVERSIONSWITHAGGREGATES.RECERTIFICATIONUNIT_ID = 0 THEN DATEADD(day, 1*COURSEVERSIONSWITHAGGREGATES.RECERTIFICATIONVALUE, MaxTrainingView."MaxTrainedCompletionDate") END
    AS ExpirationDate    

From MAXTRAININGVIEW

INNER JOIN PERSONNELVIEW ON (MAXTRAININGVIEW."Personnel_ID" = PERSONNELVIEW.PERSONNELID) INNER JOIN COURSEVERSIONSWITHAGGREGATES ON (MAXTRAININGVIEW."Course_ID" = COURSEVERSIONSWITHAGGREGATES.COURSEID)

WHERE Personnelview.DisplayName = 'Aaron')) Select  CourseTitle, CourseNumber, "MaxTrainedCompletionDate", "Course_ID", DisplayName, RecertificationValue, Recertificationunit_ID, ExpirationDate,

CASE WHEN ExpirationDate > current_date Then 'Active' WHEN ExpirationDate < current_date Then 'Expired' END As CertStatus  from cte) Group By CertStatus, DisplayName

这将在报表构建器中返回静态值为“ Aaron”的值。但是尝试使用参数时,它不会在报表生成器中引发错误,但是只会返回任何数据。

例如:

WHERE Personnelview.DisplayName = '@DisplayName'))

我已经根据另一个数据集查询获得了该参数,而且似乎可行(它使我可以选择雇员)

以下是通过“ Aaron”的示例(已删除个人信息) ReportBuilder

传递@FName参数的示例:

FName Param

1 个答案:

答案 0 :(得分:0)

如果要在报表中传递参数,其他类型的数据库可能无法识别“ @parameter中的[field]字段”之类的查询,因此我认为您可以尝试使用过滤器来实现此目标(在数据集中创建过滤器,然后创建一个参数,然后在过滤器属性中指定它。