Мой подотчет отображает все результаты в каждой ячейке в основном отчете - PullRequest
0 голосов
/ 30 октября 2019

У меня есть файлы RDLC с именами MainReport.rdlc и SubReport.rdlc .

Subreport.rdlc (Очевидно, что яподотчет).

Мне удалось отобразить детали моего подотчета в моей основной таблице. но проблема в том, что подотчет отображает все данные по каждой строке в моем подотчете

Я хочу вот что:

enter image description here

Но происходит следующее:

enter image description here

Запрос набора данных по MainReport

Select DISTINCT tblMain.ID_Num, tblMain.fldDate,Scope.Description,tblMain.Accomplishment,Rating.fldQuality, Rating.fldQuantity, Rating.fldAccuracy from tblMain 
JOIN tblScope as SCOPE on  tblMain.Scope = Scope.Id
LEFT JOIN tblRatings as Rating on tblMain.RatingRefCode = Rating.ScopeCode 
where tblMain.ID_Num = @RefNo AND fldDate between @Start and @End
Group By tblMain.ID_Num, tblMain.fldDate,Scope.Description,tblMain.Accomplishment,Rating.fldQuality, Rating.fldQuantity, Rating.fldAccuracy

Вот запрос к набору данных в подотчете

Select DISTINCT tblMain.ID_Num, tblMain.fldDate,Scope.Description,tblMain.Accomplishment from tblMain 
JOIN tblScope as SCOPE on  tblMain.Scope = Scope.Id
LEFT JOIN tblRatings as Rating on tblMain.RatingRefCode = Rating.ScopeCode 
where tblMain.ID_Num = @RefNo AND fldDate between @Start and @End
Group By tblMain.ID_Num, tblMain.fldDate,Scope.Description,tblMain.Accomplishment

1 Ответ

0 голосов
/ 07 ноября 2019

Похоже, что вы не установили параметры подотчета.

В MainReport.rdlc :

  • щелкните правой кнопкой мыши подотчет> Свойства подотчета> Параметры
  • установить новый параметр с именем ScopeParameter и значением, равным полю Scope в вашем наборе данных (например, [ScopeId])

В Subreport.rdlc :

  • установите новый параметр с именем ScopeParameter
  • в вашей группе Tablix или Tablix определите новый фильтр с помощью [ScopeId] = @ScopeParameter

При большом объеме данных кажется более быстрым использование события SubreportProcessingHandler для фильтрации данных в подотчете вместо установки фильтра в Tablix или Tablix Group.

Private Sub SubreportProcessingHandler(sender As Object, e As SubreportProcessingEventArgs)

    Dim intScope As Integer = CInt(e.Parameters.Item("ScopeParameter").Values(0))

    Dim dvYourDataView As New DataView(Me.dsYourDataset.Tables(0))
    dvYourDataView.RowFilter = "ScopeId = " & intIdScope

    e.DataSources.Add(New ReportDataSource("YourReportDataSourceName", dvYourDataView.ToTable("YourReportDataSourceName")))

End Sub
...