有没有办法知道 For each 何时在 genexus X v3 上进行第一次和最后一次迭代?
Is there a way to know when a For each is on his first and last Iteration on genexus X v3?
我正在使用 for each 来调用生成报告的命令,但我需要第一个和最后一个报告的数据与其他报告有所不同,有没有办法在 genexus X v3 上知道这一点?
如果您只需要将第一次迭代与其余迭代区分开来,您可以只使用布尔变量。当在最后一次迭代中,你需要在之后做一些你在其他迭代中所做的事情时,也可以使用它:
&first = true
for each
if &first
&first = false
// Do whatever you need in the first iteration
else
// Do whatever you need in the remaining iterations
endif
endfor
// Do whatever you need to do after the last iteration
如果你需要在最后一次迭代中做一些不同的事情而不是你在每一次迭代中做的你需要延迟你的动作一次迭代并使用缓冲区变量来保存以前的值。
例如,假设您需要使用两个属性CustomerCode
,CustomerName
并且您需要为第一次迭代调用Procedure1
,为剩余的less调用Procedure2
最后一次迭代和 Procedure3
最后一次迭代:
&first = true
&rest = false
for each
if &first
&first = false
// Do whatever you need in the first iteration
Procedure1(CustomerCode, CustomerName)
else
if &rest
// Do whatever you need in the remaining iterations, using buffer variables
Procedure2(&CustomerCode, &CustomerName)
else
&rest = true
endif
// Load buffer variables
&CustomerCode = CustomerCode
&CustomerName = CustomerName
endif
endfor
// Do whatever you need in the last iteration, using buffer variables
if &rest
Procedure3(&CustomerCode, &CustomerName)
endif
我正在使用 for each 来调用生成报告的命令,但我需要第一个和最后一个报告的数据与其他报告有所不同,有没有办法在 genexus X v3 上知道这一点?
如果您只需要将第一次迭代与其余迭代区分开来,您可以只使用布尔变量。当在最后一次迭代中,你需要在之后做一些你在其他迭代中所做的事情时,也可以使用它:
&first = true
for each
if &first
&first = false
// Do whatever you need in the first iteration
else
// Do whatever you need in the remaining iterations
endif
endfor
// Do whatever you need to do after the last iteration
如果你需要在最后一次迭代中做一些不同的事情而不是你在每一次迭代中做的你需要延迟你的动作一次迭代并使用缓冲区变量来保存以前的值。
例如,假设您需要使用两个属性CustomerCode
,CustomerName
并且您需要为第一次迭代调用Procedure1
,为剩余的less调用Procedure2
最后一次迭代和 Procedure3
最后一次迭代:
&first = true
&rest = false
for each
if &first
&first = false
// Do whatever you need in the first iteration
Procedure1(CustomerCode, CustomerName)
else
if &rest
// Do whatever you need in the remaining iterations, using buffer variables
Procedure2(&CustomerCode, &CustomerName)
else
&rest = true
endif
// Load buffer variables
&CustomerCode = CustomerCode
&CustomerName = CustomerName
endif
endfor
// Do whatever you need in the last iteration, using buffer variables
if &rest
Procedure3(&CustomerCode, &CustomerName)
endif