Crystal reports crystal report分层分组选项(如果零件重复)
我遇到一个关于crystal report的问题:如何分组 我有一张名为Part的表Crystal reports crystal report分层分组选项(如果零件重复),crystal-reports,Crystal Reports,我遇到一个关于crystal report的问题:如何分组 我有一张名为Part的表 Part_ID Parent_Part_ID B A c A A NULL C B D B E C F C A是顶部零件,B、C、D不仅是子零件,而且是父零件,E、F是最低的子零
Part_ID Parent_Part_ID
B A
c A
A NULL
C B
D B
E C
F C
A是顶部零件,B、C、D不仅是子零件,而且是父零件,E、F是最低的子零件
现在,我需要用水平从一部分到另一部分显示,如下所示
如何在Crystal report中显示此格式的数据
我尝试使用分层分组选项
,但结果不是我想要的
我需要的结果是:
A
B
C (shold be show even the part have two parent part)
E
F
D
C
E
F
解决了的!
尝试使用菜单语音调用分层分组选项
,并指定将每条记录链接到其父记录的字段
结果应该与此类似:
A
B
C
E
F
D
C
E
F
但Crystal Reports层次结构只对每条记录执行一次操作,并且不关心同一元素是否应位于两个父项下。
因此,我做了一个查询hack,使用基于父项的同一个表上的联接直接在数据中创建层次结构
DECLARE @t TABLE (Part_ID varchar(1), Parent_Part_ID varchar(1) );
insert into @t
SELECT 'B' , 'A'
UNION SELECT 'C' , 'A'
UNION SELECT 'A' , NULL
UNION SELECT 'C' , 'B'
UNION SELECT 'D' , 'B'
UNION SELECT 'E' , 'C'
UNION SELECT 'F' , 'C'
SELECT
t1.Part_ID as t1,
t2.Part_ID as t2,
t3.Part_ID as t3,
t4.Part_ID as t4
FROM @t t1
LEFT JOIN @t t2 on t1.Part_ID = t2.Parent_Part_ID
LEFT JOIN @t t3 on t2.Part_ID = t3.Parent_Part_ID
LEFT JOIN @t t4 on t3.Part_ID = t4.Parent_Part_ID
WHERE t1.Parent_Part_ID is null
并且删除了分层分组选项,只在t1、t2、t3上创建了3个组使用每个组的标题,并使用t4的详细信息
结果是,根据需要
A
B
C
E
F
D
C
E
F
如果有人需要它。jack,你试过我的解决方案吗?我试过你的解决方案,但仍然有一个问题,它不能告诉C,在新的解决方案中,家长的角色在哪里。。问题解决了!你的解决方案很好,但有限,对我的问题来说,水平是动态和不确定的,谢谢我尝试你的解决方案,但结果不是我想要的,你说得对@jack.li结果看起来像你写的,而不是我写的。Crystal Reports只获取每条记录一次,并将其附加到找到的第一个父项。感谢您的解决方案。无法完成此功能?您的解决方案很好,但有限,我的问题是,级别是动态和不确定的,Thanks@jack.li您可以使用多个联接(20?50?)进行查询,以满足数据的任何可能要求。您必须在报告中创建相同数量的组。隐藏空部分报告将适应真实数据。这是一个解决方法,但可以解决您的问题。