Report Fetch方法未拾取报表上的第一个值

Report Fetch方法未拾取报表上的第一个值,report,reporting,axapta,microsoft-dynamics,ax,Report,Reporting,Axapta,Microsoft Dynamics,Ax,我再次与另一个报告查询。。。 我以前遇到过这个问题并解决了这个问题,但是在检查了现有的报告后,我看不出哪里出了问题,所以希望其他人能够对此提供帮助 基本上,我有一个和其他报告一样的报告,有两个标题和一个主体部分,还有一些静态字段作为可编程部分。收割台和可编程部分正常,并按预期运行。body部分中的数据来自ProdBOM表中的字段,该表与我用作数据源的主表之间存在关系。这两个都是我报告中的数据源 我已经在fetch方法中输入了以下代码 public boolean fetch() { Pr

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

基本上,我有一个和其他报告一样的报告,有两个标题和一个主体部分,还有一些静态字段作为可编程部分。收割台和可编程部分正常,并按预期运行。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;
}
结果是,第一页的正文部分没有数据,但后面的页面正文中有数据,这有什么原因吗?

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

您的IF子句是否导致跳过第一个过程

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


如果您不知道的话,我在AX中的报告能力就弱了。

您在第一次
发送之前显式调用
元素.newPage()
,这会创建一个空白页

控制变量将实现以下功能:

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

谢谢你的帮助。这部分取决于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);
}

好了,首先调用函数,然后调用
元素。newpage
等等。

您好,谢谢您的建议,主要是newpage();欢迎来到堆栈溢出!虽然这段代码片段可能会解决这个问题,包括如何以及为什么解决这个问题的解释,以提高您的文章的质量。记住,你是在将来回答读者的问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。
//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;
}