Пустые данные в отчетах SSRS - PullRequest
0 голосов
/ 21 марта 2019

Я работаю над отчетами ssrs. Я смог увидеть данные или результат моей хранимой процедуры. К сожалению, когда я использовал то же самое, что и мой набор данных для отчета, я не смог увидеть данные, вместо этого я получил 0 записей. Какие могут быть причины? Моя структура отчетов будет быть похожим на изображение ниже: My ssrs design

Мой текущий результат: Current result

Ниже моя процедура:

 ALTER Proc [dbo].[SP_Get_CIPPSubjectMarks_New_HTSTEST] - 
 -7,'1,17,8','2537,2555,2558,2568'
(

@ReportId int=7,
@SubjectId varchar(200),
@SectionId varchar(200)
)
AS
BEGIN
Create table #temp (Name Varchar(500),Class varchar(50),Section 
Varchar(20),enrollno varchar(500),SubjectName varchar(500),TermName 
varchar(500),TestName varchar(500),TestGroupName varchar(500),Weightage 
int,IsWeight bit,Marks varchar(20),MaxMarks int,IsAbsent bit,SubjectOrder 
Varchar(200))
Insert into 
#temp(Name,Class,Section,enrollNo,SubjectName,
TermName,TestName,TestGroupName,Weightage,IsWeight,Marks,
MaxMarks,IsAbsent,SubjectOrder)
SELECT DISTINCT CONCAT(d.name,' ',d.surname),cls.Value,sec.Value, 
e.enroll_no,
CASE WHEN ISNULL(cxs.subject_alias,'')='' THEN CASE WHEN rtv.value='Second 
Language' then '2ND LANGUAGE:' + b.Name WHEN 
rtv.value='Third Language' THEN '3rd Language:'+b.name else b.name end 
ELSE cxs.subject_alias end  as SubjectName,
z.str_termname,c.str_termtestname,i.str_testgroupname,
i.str_testweightage,i.is_weighted_average,a.marks,max_marks,a.is_absent,
CASE WHEN  rtv.value='Second Language' THEN 'Second Language' WHEN 
rtv.Value='Third Language' THEN 'Third Language' When 
ISNULL(cxs.subject_alias,'')='' THEN b.Name 
ELSE cxs.subject_alias end as SubOrder
FROM marks_entry_HTS a JOIN subject b ON a.fk_subject_id=b.Id and a.marks 
is not null
LEFT JOIN subjectCategory_HTS l ON l.Id= b.subject_categoryID
JOIN class_term_test_mapping_HTS c ON a.fk_class_term_test_mapping_id=c.id
-- added by me
JOIN class_term_test_category_HTS ctc on c.fk_termcategoryid = ctc.id
JOIN reference_type_value rtv ON rtv.id=a.fk_subject_type_id
-- close
JOIN Term_Test_Subject_AssessmentType_HTS m ON m.fk_term_testID=c.id and 
m.fk_SubjectID=b.Id
JOIN class_report_types_mapping_test_HTS k ON 
k.fk_class_term_test_mapping_id=c.Id
JOIN class_term_mapping_HTS z ON z.id=k.fk_class_term_mapping_id
JOIN Term_Test_Testgroup_aggregate_HTS i ON 
i.Id=c.fk_testgroup_aggregateID
JOIN TestGroup_HTS j on j.Id=i.fk_TestGroupID
JOIN student d ON a.fk_student_id=d.Id JOIN student_enroll_no e ON   
e.fk_student_id=d.id and IsNULL(e.is_deleted,0)=0
JOIN student_academic f on f.fk_student_enroll_no_id=e.id and 
f.fk_academic_year_id=c.fk_academic_year_id
JOIN reference_type_value cls on cls.Id=f.fk_class_id
LEFT JOIN reference_type_value sec ON sec.Id=f.fk_section_id
LEFT JOIN max_marks_entry_HTS h on h.id=a.fk_max_marks_entry_id
join class_xref_subjects cxs ON h.fk_subject_id=cxs.fk_subject_id and      
cxs.fk_subject_type_id=h.fk_subject_type_id  and  
IsNull(cxs.is_deleted,0)=0 
and  cxs.fk_class_id=h.fk_class_id and 
cxs.fk_academic_year_campus_id=h.fk_academic_year_campus_id and 
cxs.fk_curriculum_segment_id=h.fk_curriculum_segment_id
where k.fk_class_report_types_mapping_id=@ReportId
and h.fk_section_id in (select * from SplitStringByChar(@SectionId,','))
and a.fk_subject_id in (select * from SplitStringByChar(@SubjectId,','))

select Name,Class,Section,enrollNo,SubjectName,TermName,
TestGroupName as TestName,
Case WHEN IsWeight=1 THEN Round(Cast(((avg(CAST(Marks as 
 float)/cast(MaxMarks as float)))*Weightage) as decimal(10,0)),0)
 else Round(Cast(((cast(max(Marks) as float)/cast(max(MaxMarks) as 
 float))*Weightage) as decimal(10,0)),0) ENd as Marks ,
SubjectOrder ,sum(maxmarks) as maxmarksare INTO #temp1 from #temp 
GROUP BY Name,Class,Section,enrollNo,SubjectName,
TermName,SubjectOrder,IsWeight,Weightage,TestGroupName

Insert into #temp 
 (Name,Class,Section,enrollNo,SubjectName,
TermName,TestName,Marks,SubjectOrder)
select
 Name,Class,Section,enrollNo,SubjectName,TermName,'Total',
SUM(Marks),SubjectOrder from #temp1 
GROUP BY Name,Class,Section,enrollNo,SubjectName,TermName,SubjectOrder

Insert into #temp 
(Name,Class,SubjectName,Section,enrollNo,TermName,TestName,Marks)
select Name,Class,'Total',Section,enrollNo,TermName,'Total 
Marks',SUM(Marks) 
from #temp1 
GROUP BY Name,Class,Section,enrollNo,TermName

Insert into #temp 
(Name,Class,SubjectName,Section,enrollNo,TermName,TestName,Marks)
select 
Name,Class,'Total',Section,enrollNo,TermName,'Percentage',
SUM(Marks)*100/sum(m 
axmarksare) from #temp1 
GROUP BY Name,Class,Section,enrollNo,TermName 



select *from #temp
drop table #temp
drop table #temp1

end

Мой результат процедуры такой, как на картинке ниже: Procedure result

1 Ответ

0 голосов
/ 22 марта 2019

Поскольку существует ряд вещей, которые могут быть неправильными, я бы сделал следующее:

  1. Создайте копию вашего отчета
  2. Удалите существующий набор данных и таблицу, если хотите.
  3. Создайте несколько новых наборов данных, которые просто получают базовые данные (например, SELECT top 10 * FROM marks_emtry_HTS).Пока не используйте ваши параметры, поскольку мы просто хотим проверить, что мы можем получить базовые данные.
  4. Добавьте несколько таблиц в свой отчет, чтобы показать, что данные возвращаются
  5. Добавьте набор данных для проверкиправильно передаете и анализируете параметры, используя запрос к набору данных, например select * from SplitStringByChar(@SectionId,','), а затем добавляете tablix в свой отчет, чтобы показать результаты.
  6. Попробуйте обрезать значения параметров SET @SectionId = LTRIM(RTRIM(@SectionId)), чтобы убедиться, что вы не обрабатываете ведущиеили неправильно завершающий пробел в функции разделения.
  7. Если какие-либо части не работают, запустите трассировку на SQL Server при запуске отчета и посмотрите, что именно выполняется на сервере.

Я знаю, что многие из этих шагов могут показаться вам ненужными, но найдите время, чтобы сделать это, и, по крайней мере, вы уверены, что вы можете исключить такие базовые проверки из своего расследования.

...