我再次使用另一个报告查询... 我之前遇到过这个并解决了这个问题,但是检查了现有的报告,我看不出哪里出错了,所以希望其他人看到这个就能帮忙......
基本上,我有一个像其他报告一样的报告,有两个标题和一个正文部分,还有一些静态字段作为可编程部分。标题和可编程部分很好,并按预期运行。 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;
}
结果是第一页的正文部分没有数据,但是下面的页面中有数据,是否有任何理由发生这种情况?
答案 0 :(得分:2)
您在第一个element.newPage()
之前明确调用了send
,这会创建一个空白页。
控制变量可以解决这个问题:
boolean newPage = false;
...
if (newPage)
element.newPage();
else
newPage = true;
答案 1 :(得分:0)
确定指定的数据源是否已获取新值 自上次调用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;
}
,依此类推。