获取方法不会在报告中获取第一个值

时间:2012-05-01 14:35:11

标签: report reporting axapta microsoft-dynamics ax

我再次使用另一个报告查询... 我之前遇到过这个并解决了这个问题,但是检查了现有的报告,我看不出哪里出错了,所以希望其他人看到这个就能帮忙......

基本上,我有一个像其他报告一样的报告,有两个标题和一个正文部分,还有一些静态字段作为可编程部分。标题和可编程部分很好,并按预期运行。 body部分中的数据来自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 个答案:

答案 0 :(得分:2)

您在第一个element.newPage()之前明确调用了send,这会创建一个空白页。

控制变量可以解决这个问题:

boolean newPage = false;    
...    
if (newPage)
    element.newPage();
else
    newPage = true;

答案 1 :(得分:0)

QueryRun.Changed():

  

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

您的IF子句是否导致第一​​次传递被跳过?

或者,是因为你马上调用“element.newPage()”?在创建报告时是否存在现有页面,您应该在创建新页面之前先填充数据?

如果你不知道,我在AX中的报道较弱。

答案 2 :(得分: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);
}

答案 3 :(得分:0)

import org.apache.spark.sql.{Dataset, SparkSession}

object WebPageReader {
  def apply(spark: SparkSession, path: String): Dataset[WebPageCase] = {
    import spark.implicits._
    spark.read.json(path).as[WebPageCase]
  }
}

你去,首先调用函数,然后调用//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; } ,依此类推。