程序genexus中的无限循环
Infinite loop in procedure genexus
我有一个名为 Categoria
的 table,它具有 CategoriaId 主键和 CategoriaPaiId
外键,与 CategoriaId
.
我需要创建一个 return 类别树的过程。
假设我有这个类别和这个子类别:
易腐 > 饮料 > 葡萄酒 > 红色
在注册 Drinks 时,我需要变量 &CategoriaSubCategoriaNome returns 这个 varchar:
易腐烂>饮料。
在寄存器 Red 中,我需要在变量 &CategoriaSubCategoriaNome 中 return 字符串:
易腐食品>饮料>葡萄酒
这是我创建的程序:
&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
但是我在这个过程中遇到了一个无限循环。
我不确定您的交易结构。对于这个答案,我将向您展示如何使用公式获取类别名称层次结构:
交易类别:
CategoryId*
CategoryName
CategoryFullName formula: GetCategoryFullName(CategoryId)
CategoryParentId <nullable=Yes>
CategoryParentName
子类型组类别父组
CategoryParentId* sbt CategoryId
CategoryParentName sbt CategoryName
程序GetCategoryFullName
在规则中:parm(in: CategoryId, out: &CategoryFullName)
来源:
for each
&CategoryFullName = iif(CategoryParentId.IsNull(),
CategoryName,
GetCategoryFullName(CategoryParentId) + !' > ' + CategoryName)
endfor
我会定期解决它:
过程:类别列表
规则:
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
我有一个名为 Categoria
的 table,它具有 CategoriaId 主键和 CategoriaPaiId
外键,与 CategoriaId
.
我需要创建一个 return 类别树的过程。
假设我有这个类别和这个子类别:
易腐 > 饮料 > 葡萄酒 > 红色
在注册 Drinks 时,我需要变量 &CategoriaSubCategoriaNome returns 这个 varchar:
易腐烂>饮料。
在寄存器 Red 中,我需要在变量 &CategoriaSubCategoriaNome 中 return 字符串:
易腐食品>饮料>葡萄酒
这是我创建的程序:
&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
但是我在这个过程中遇到了一个无限循环。
我不确定您的交易结构。对于这个答案,我将向您展示如何使用公式获取类别名称层次结构:
交易类别:
CategoryId*
CategoryName
CategoryFullName formula: GetCategoryFullName(CategoryId)
CategoryParentId <nullable=Yes>
CategoryParentName
子类型组类别父组
CategoryParentId* sbt CategoryId
CategoryParentName sbt CategoryName
程序GetCategoryFullName
在规则中:parm(in: CategoryId, out: &CategoryFullName)
来源:
for each
&CategoryFullName = iif(CategoryParentId.IsNull(),
CategoryName,
GetCategoryFullName(CategoryParentId) + !' > ' + CategoryName)
endfor
我会定期解决它:
过程:类别列表
规则:
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