Как передать параметр в построителе отчетов в базу данных Firebird? - PullRequest
0 голосов
/ 05 декабря 2018

Я смотрю на разработку некоторых отчетов для одного из наших учебных программ.Я наконец получил несколько запросов, работающих в 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 голосов
/ 01 января 2019

Если вы хотите передать параметр в отчете, база данных другого типа может не распознать запрос типа «где [поле] в @parameter», поэтому я думаю, что вы можете попробовать использовать фильтр для достижения этой цели (создать фильтр в наборе данныхи создайте параметр, затем укажите его в свойствах фильтра).

...