Crystal Reports-显示列表中的所有项目-受影响和不受影响。

2020-08-14 19:07发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在处理一个报告,该报告显示了用户完成的一组培训列表。 该报告需要显示的是培训列表以及用户完成培训的日期。 例如,对于给定的用户USER A,该报告需要显示:

用户A

 训练
 ---------
 培训A 1/1/2020
 培训B
 培训C 6/1/2020
 培训D 

首先,我在报告中有两个命令。 命令1用于提供有关用户,培训和培训日期的信息。 命令2用于提供可用培训的列表。 我将两个命令与训练描述值链接在一起。 "培训"已分组,并且培训说明位于"详细信息"部分。

我现在如何配置报告,以便报告将在上面显示培训说明的列表以及用户在完成培训后仍显示所有培训的日期?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在处理一个报告,该报告显示了用户完成的一组培训列表。 该报告需要显示的是培训列表以及用户完成培训的日期。 例如,对于给定的用户USER A,该报告需要显示:

用户A

 训练
 ---------
 培训A 1/1/2020
 培训B
 培训C 6/1/2020
 培训D 

首先,我在报告中有两个命令。 命令1用于提供有关用户,培训和培训日期的信息。 命令2用于提供可用培训的列表。 我将两个命令与训练描述值链接在一起。 "培训"已分组,并且培训说明位于"详细信息"部分。

我现在如何配置报告,以便报告将在上面显示培训说明的列表以及用户在完成培训后仍显示所有培训的日期?

付费偷看设置
发送
6条回答
Cikesha
1楼 · 2020-08-14 19:17.采纳回答

首先,请参见博客,以获取有关如何使用命令的信息-您不应该使用两个命令。 最佳实践是在单个命令中查询报表的所有数据,因为Crystal无法将命令之间的联接推入数据库,因此将它们联接到内存中效率很低。

如果 您将同时发布命令和要连接的数据库类型,我应该能够帮助您将它们放入一个查询中,该查询将显示所有类以及每个用户使用的类。

-戴尔

悻福寶寶
2楼-- · 2020-08-14 19:40

您要连接到哪种类型的数据库?

SAP小菜
3楼-- · 2020-08-14 19:22

谢谢,戴尔! 我必须对查询进行一些修改,因为报告的要求已更改,但我以您的查询为起点。 再次谢谢!!

超级大咸鱼
4楼-- · 2020-08-14 19:30

此外,我也看不到这两个位置都在哪里引入了"用户"信息。 您还链接到另一个表吗? 如果是这样,请提供表名称和结构。 谢谢!

葫芦娃快救爷爷
5楼-- · 2020-08-14 19:41

对不起。 SQL Server和第一个命令显示用户信息。 它显示用户的姓名,用户完成的培训以及培训的完成日期。 第二个查询显示技能的主列表,并且两个命令在报表中链接。

太Q了
6楼-- · 2020-08-14 19:40

如果要按Skill排序,然后按TrainingDescript排序,则应该可以:

官员培训为(
   选择
     培训说明
     名称,
     max(CompDateTime)作为CompDateTime,
   来自TrainingCheckOff
   {?SelectedOfficers}中的OfficerId在哪里
     和TrainingDescript之类的'{?Skill}'+'%'
   按TraininDescript分组,名称
 )

 选择
   tl.TrainingDescript,
   案件
     当tl.TrainingDescript喜欢'cspace%'然后'CSPACE'
     当tl.TrainingDescript喜欢'gen%'然后'GENERAL'
     当tl.TrainingDescript喜欢'rope%'然后'ROPE'
     当tl.TrainingDescript喜欢'sct%'然后是'SCT'
     当tl.TrainingDescript喜欢'trench%'然后'TRENCH'
   以技能结束
   ot.Name,
   ot.CompDateTime
 来自TrainingList tl
   左加入主任培训
     在tl.TrainingDescript = ot.TrainingDescript
 其中Code ='TRTSkillCheckOff'
   和TrainingDescript之类的'{?Skill}'+'%'
 但是,如果您需要按人员分组,则事情会变得更加复杂,因为您需要警官和TrainingList之间的完全外部连接才能获取所有信息 。 可能看起来像这样:

,其中OfficerTraining为(
   选择
     培训说明
     名称,
     max(CompDateTime)作为CompDateTime,
   来自TrainingCheckOff
   {?SelectedOfficers}中的OfficerId在哪里
     和TrainingDescript之类的" {?Skill}"
   按名称分组,TraininDescript
 ),

 官员姓名为(
   选择不同的名称
   来自OfficerTraining
 )

 选择
   tl.TrainingDescript,
   案件
     当tl.TrainingDescript喜欢'cspace%'然后'CSPACE'
     当tl.TrainingDescript喜欢'gen%'然后'GENERAL'
     当tl.TrainingDescript喜欢'rope%'然后'ROPE'
     当tl.TrainingDescript喜欢'sct%'然后是'SCT'
     当tl.TrainingDescript喜欢'trench%'然后'TRENCH'
   以技能结束
   oNames.Name
 来自OfficerTraining ot
   完整的外部加入OfficerName oNames
     在1 = 1
   左加入TrainingList tl
     在tl.TrainingDescript = ot.TrainingDescript
 和oNames.Name = ot.Name
 其中Code ='TRTSkillCheckOff'
   和TrainingDescript之类的" {?Skill}"
 按名称,技能,培训顺序排序
 

这只会拉那些至少上过一堂课的人员。 如果需要显示所有人员,请更改OfficerNames查询以从包含所有人员列表的表中获取列表,并添加以下内容:

其中{?SelectedOfficers}  

对于这两种方法,我都用Crystal参数替换了where子句中的硬编码值。 您将在命令编辑器中创建两个参数。

对于{?Skill}参数,在保存命令后将执行以下操作:

-在 字段浏览器的"参数"部分。

-在参数编辑器中间的"值/描述"部分中,将"值"设置为技能案例语句的"喜欢"部分中的值(包括"%" ""和对技能案例陈述中" then"部分的说明。

-设置以下属性:

仅带有说明的提示= True
允许自定义 值= False
显示值或描述=显示值

对于{?OfficerID}参数,请按照我上一篇文章中链接到的博客中有关动态参数的说明进行操作。

Dell

一周热门 更多>