【问题标题】:How to set two table in Data Source in Crystal Report如何在水晶报表的数据源中设置两个表
【发布时间】:2016-05-30 06:48:57
【问题描述】:

我在 Crystal Report 中遇到问题,我需要在 Crystal Report 上打印,其中值来自三个表:

1-teach_details 2-MasterTeacher详情 3-MasterTeacher标本详情

因此,为此我使用了包含所有必要字段的数据表。在水晶报表上,报表标题部分有教详细信息值,在详细信息部分 MasterTeacherDetails 上,然后是 MasterTeacherSpecimenDetails ,为此我有如下查询:

 Select teach_details.IdentityCode,IdentityName,dbo.fun_UniIdToUniName(UniId) as UniversityName,teach_details.Address+', '+dbo.fun_CityIdToCityName(teach_details.StateID,  teach_details.CityID)+', '+dbo.fun_StateIdToStateName(teach_details.StateID)+', '+teach_details.PinCode as IdentityAddress,  dbo.fun_GradeIdToGradeName(teach_details.Grade) as Grade,  case when teach_details.TypeOfIdentity='College' then dbo.fun_StrIdToStrName(teach_details.Streams)  else case when teach_details.TypeOfIdentity='Coaching' then dbo.fun_ExamIdToExamName(teach_details.Exam)  else dbo.fun_StanderdIdToStanderdName(teach_details.Standerd) end end as Strm_Exam_Standard, TeacherName+'/'+MasterTeacherDetails.TeacherCode as TeacherName, case when MasterTeacherDetails.TypeOfIdentity='College' then dbo.fun_StrIdToStrName(MasterTeacherDetails.Stream)  else case when MasterTeacherDetails.TypeOfIdentity='Coaching' then dbo.fun_ExamIdToExamName(MasterTeacherDetails.Exam)  else dbo.fun_StanderdIdToStanderdName(MasterTeacherDetails.Standerd) end end as TeacherStr_Exm_Stnrd,  case when SameAddress='True' then teach_details.Address+', '+dbo.fun_CityIdToCityName(teach_details.StateID, teach_details.CityID)+', '+dbo.fun_StateIdToStateName(teach_details.StateID)+', '+teach_details.PinCode else MasterTeacherDetails.Address+', '+dbo.fun_CityIdToCityName(MasterTeacherDetails.StateID,MasterTeacherDetails.CityID)+', '+dbo.fun_StateIdToStateName(MasterTeacherDetails.StateID)+', '+MasterTeacherDetails.PinCode end as TeacherAddress, MasterTeacherDetails.Mobile as TeacherMobileNo,MasterTeacherDetails.EmailID as TeacherEmailID,Case MasterTeacherDetails.DOB when '01/01/1900' then '' else Convert(varchar(10),MasterTeacherDetails.DOB,103) end as DOB,MasterTeacherDetails.Remark  ,BookCode,BookCode as BookName,BookCode as AuthorName,DispatchThrough as Mode,Qty  from teach_details inner join MasterTeacherDetails on teach_details.IdentityCode=MasterTeacherDetails.IdentityCode  inner Join MasterTeacherSpecimenDetails on MasterTeacherDetails.TeacherCode=MasterTeacherSpecimenDetails.TeacherCode  where  (teach_details.TypeOfIdentity ='College' and (teach_details.CityID = 'GHAZIA')) order by IdentityName

现在,这里的问题是 MasterTeacherDetails 和 MasterTeacherSpecimenDetails 有不同的行数,假设 MasterTeacherDetails 有 a,b,c 和 MasterTeacherSpecimenDetails 有 d,e,f,g,h

因此,当我使用数据运行它时,它会显示 5 行条目,而 MasterTeacherDetails 行会重复 5 次,例如:

应该显示:

我不能使用子报告来显示样本详细信息部分和主报告显示教师详细信息部分。

所以请帮忙,并且请尽量减少技术性,因为我在 C#.net 上的效率还不是很高。

【问题讨论】:

  • 链接似乎有问题..检查链接

标签: asp.net .net c#-4.0 crystal-reports crystal-reports-2010


【解决方案1】:

请改用DataSet

数据集 dsReport = new DataSet();

dsReport.Tables.Add(dataTable1);

dsReport.Tables.Add(dataTable2);

yourReport.SetDataSource(dsReport)

【讨论】:

    【解决方案2】:

    从我通过阅读您的问题和 cmets 收集到的信息来看,您似乎想要一份摘要,然后还将每个教师的样本列表放在单独的页面上,这样您就可以将报告分开并给他们每个人的列表。

    此外,您似乎只想使用一个 SQL 查询来执行此操作,这意味着一个命令表。

    我将从报告的两个部分按教师分组开始。

    对于标本详细信息部分,您可以隐藏组页眉和页脚。使用小组专家分页设置在每个教师组之后创建一个新页面,让每个教师在不同的页面上分发报告的各个部分。此外,您可能希望在该组之后重新启动页码。我认为您无法通过小组专家来做到这一点;您可能需要通过组页脚分页设置的部分专家来执行此操作。

    对于教师详细信息部分,也使用教师分组在组页眉或页脚中显示“教师详细信息”,然后使用部分专家抑制详细信息部分。这将消除您的多行。我会将教师详细信息放在报告标题部分的子报告中,并使用部分专家在报告标题部分之后创建一个新页面。这就像一个专门的首页。

    【讨论】:

    • 感谢您的回复我使用了子报告。先生,我想在教师详细信息部分显示教师的详细信息,并使用单个 Sql 查询将样本副本发送到下面(样本详细信息)部分中的特定教师显示。如果你愿意,我会在纸上展示这个问题的表示
    • 在我看来,您的意思是在开始时想要一个摘要列表,然后想要一个可以为每个老师分开的样本列表?
    • 我已经改变了我的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多