1

再次向我提出另一个报告查询...我以前遇到过这个问题并解决了这个问题,但是在检查了现有报告后我看不出我哪里出错了,所以希望其他人看到这个问题能够提供帮助.. .

基本上,我有一个和其他报告一样的报告,有两个标题和一个正文部分,以及一些作为可编程部分的静态字段。标头和可编程部分很好,可以按预期运行。正文部分中的数据来自 ProdBOM 表中的字段,并且该表与我用作数据源的主表之间存在关系。这两个都是我报告中的数据源。

我已将以下代码输入到 fetch 方法中;

public boolean fetch()
{
    ProdBom                 _prodBom;
    LogisticsControlTable   _logisticsControlTable;
    ;

    queryRun = new QueryRun(this);

    if (!queryRun.prompt() || !element.prompt())
    {
        return false;
    }

    while (queryRun.next())
    {
        if (queryRun.changed(tableNum(LogisticsControlTable)))
        {
            _logisticsControlTable = queryRun.get(tableNum(LogisticsControlTable));
            if(_logisticsControlTable)
            {
                element.newPage();
            }
            this.send(_logisticsControlTable);

            if(_logisticsControlTable.ProdId)
            {
                while select _prodBom where _prodBom.ProdId == _logisticsControlTable.ProdId
                {
                    element.send(_prodBom);
                }
            }
        }
    }
    return true;
}

结果是第一页的正文部分没有数据,但后面的页面正文中有数据,有什么原因会这样吗?

4

4 回答 4

2

element.newPage()您在 first 之前显式调用send,这会创建一个空白页面。

控制变量可以解决问题:

boolean newPage = false;    
...    
if (newPage)
    element.newPage();
else
    newPage = true;
于 2012-05-01T21:26:24.713 回答
0

查询运行.Changed():

确定自上次调用 QueryRun.next 方法以来指定的数据源是否已获取新值。

您的 IF 子句是否导致第一​​遍跳过?

或者,是因为您立即调用“element.newPage()”吗?创建报表时是否有一个现有页面,您应该在创建新页面之前先填充数据?

如果您无法分辨,我在 AX 中的报告能力较弱。

于 2012-05-01T16:08:55.450 回答
0

谢谢您的帮助。它部分归结为 newPage() 函数。为了解决这个问题,我按照 Jan 的建议在 IF 中添加了一个子句,这样只有在循环获取新的 uniqueID 时才会打印新页面。我还必须将 ProductionBom 部分替换为可编程的,以便在第一遍中拾取它,最后将 while select 语句修改如下;

while select _prodBom where _prodBom.ProdId == _logisticsControlTable.ProdId
{
    if(_logisticsControlTable.ProdId == _prodBom.ProdId)
    {
        element.send(_prodBom);
    }
    element.execute(1);
}
于 2012-05-02T08:38:10.650 回答
0
//Started with Classdeclaration
Boolean = newpage;

/*Second step would be your after debugging it depends on your
  report/design which method is going to call. Mine was Fetch.
  So, take a look.*/

newpage = true,

/*Third step would be execution part; there you just need to put
  'if' condition.*/

If(newpage==false)
{
    element.newpage();
}
else
{
  newpage=false;
}

就这样,首先调用函数,然后依次element.newpage类推。

于 2016-11-18T11:01:25.643 回答