我似乎无法找到解决方案。我已在报表中修改了Fetch方法,因此如果更改queryRun并获取新ID,则while循环将重新开始,并显示一个新页面并执行2个元素。这部分工作正常,下一部分没有,在每个ID中有几个记录,我使用的是Element.Execute();和element.Send();处理。会发生什么,选择第一个ID,执行报告的元素(正文)并按预期发送元素,但是while循环不会转到下一个ID?
这是代码;
public boolean fetch()
{
APMPriorityId oldVanId, newVanId;
LogisticsControlTable lLogisticsControlTable;
int64 cnt, counter;
;
queryRun = new QueryRun(this);
if (!queryRun.prompt() || !element.prompt())
{
return false;
}
while (queryRun.next())
{
if (queryRun.changed(tableNum(LogisticsControlTable)))
{
lLogisticsControlTable = queryRun.get(tableNum(LogisticsControlTable));
if (lLogisticsControlTable)
{
info(lLogisticsControlTable.APMPriorityId);
cnt = 0;
oldVanId = newVanId;
newVanId = lLogisticsControlTable.APMPriorityId;
if(newVanId)
{
element.newPage();
element.execute(1);
element.execute(2);
}
}
if (lLogisticsControlTable.APMPriorityId)
select count(recId) from lLogisticsControlTable where lLogisticsControlTable.APMPriorityId == newVanId;
counter = lLogisticsControlTable.RecId;
while select lLogisticsControlTable where lLogisticsControlTable.APMPriorityId == newVanId
{
cnt++;
if(lLogisticsControlTable.APMPriorityId == newVanId && cnt <= counter)
{
element.execute(3);
element.send(lLogisticsControlTable);
}
}
}
}
return true;
}
答案 0 :(得分:0)
您使用lLogisticsControlTable
作为queryRun.get()
和while select
的目标。然而这两个使用干扰;有两个SQL游标可以控制。
使用两个不同的记录变量。