我有一个名为Categoria
的表,该表具有 CategoriaId 主键和CategoriaPaiId
外键,它们与CategoriaId
具有自动关系。
我需要创建一个返回类别树的过程。
假设我在以下子类别中具有此类别:
易腐>饮料>葡萄酒>红色
在寄存器Drinks中,我需要变量&CategoriaSubCategoriaNome返回此varchar:
易腐烂>饮料。
在寄存器Red中,我需要在变量&CategoriaSubCategoriaNome中返回该字符串:
易腐烂>饮料>葡萄酒
这是我创建的过程:
&isTrue = true
&isAchou = true
do while &isTrue = true
if &isAchou = true
&isAchou = false
for each
where CategoriaId = &CategoriaPaiId
&CategoriaSubCategoriaNome = &CategoriaSubCategoriaNome+ " > " + CategoriaNome
&isAchou = true
endfor
if &isAchou = false
return
endif
endif
enddo
但是我在此过程中遇到了无限循环。
答案 0 :(得分:1)
我不确定您的交易结构。对于这个答案,我向您展示了如何使用公式获取类别名称层次结构:
交易类别:
CategoryId*
CategoryName
CategoryFullName formula: GetCategoryFullName(CategoryId)
CategoryParentId <nullable=Yes>
CategoryParentName
子类型组CategoryParentGroup
CategoryParentId* sbt CategoryId
CategoryParentName sbt CategoryName
过程GetCategoryFullName
在规则中:parm(in: CategoryId, out: &CategoryFullName)
在来源中:
for each
&CategoryFullName = iif(CategoryParentId.IsNull(),
CategoryName,
GetCategoryFullName(CategoryParentId) + !' > ' + CategoryName)
endfor
答案 1 :(得分:0)
我会反复解决它:
过程:类别列表
规则:
Parm(in:&CategoriaId, out:&CategoriaStr);
来源:
for each Categoria
where CategoriaId = &CategoriaId
if CategoriaPaiId.IsEmpty()
&CategoriaStr = CategoriaNome
else
&CategoriaStr = CategoryList(CategoriaPaiId) + !" > " + CategoriaNome
endif
when none
&CategoriaStr.SetEmpty()
endfor