Axapta 意外的查询行为
我正在尝试执行以下代码:Axapta 意外的查询行为,axapta,dynamics-ax-2012,x++,dynamics-ax-2012-r3,Axapta,Dynamics Ax 2012,X++,Dynamics Ax 2012 R3,我正在尝试执行以下代码: static void ProjTableQuery(Args _args) { Query query; QueryBuildDataSource qbds1; QueryBuildDataSource qbds2; QueryBuildRange qbr1; QueryBuildRange qbr2; QueryRun queryRun; ProjTable projTable; query = new Query(
static void ProjTableQuery(Args _args)
{
Query query;
QueryBuildDataSource qbds1;
QueryBuildDataSource qbds2;
QueryBuildRange qbr1;
QueryBuildRange qbr2;
QueryRun queryRun;
ProjTable projTable;
query = new Query();
qbds1 = query.addDataSource(tableNum(ProjTable));
qbds1.addSortField(
fieldNum(ProjTable, Name),
SortOrder::Ascending);
//qbr1 = qbds1.addRange(fieldNum(ProjTable, Type));
//qbr1.value(queryValue(ProjType::FixedPrice));
qbr2 = qbds1.addRange(fieldNum(ProjTable, ProjId));
qbr2.value(queryValue('0') + '*');
qbds2 = qbds1.addDataSource(tableNum(ProjEmplTrans));
qbds2.relations(true);
qbds2.joinMode(JoinMode::InnerJoin);
queryRun = new QueryRun(query);
while (queryRun.next())
{
projTable = queryRun.get(tableNum(ProjTable));
info(strFmt("%1 %2 %3", projTable.ProjId, projTable.Name, projTable.Type));
}
}
它可以很好地处理注释掉的那两行。但如果我取消注释它们,它将不再运行,也不会显示任何错误消息
据我所见,ProjType是一个枚举,我确信我已经在SQL中检查了FixedPrice值。此技巧对于理解查询生成的SQL非常有用:
query.literals(true);
info(query.datasourceNo(1).toString());
在while
循环之前添加行(可能注释掉循环)。输出将是一个几乎合法的SQL语句(尽管有些X++仍然很出色) X++对应的hack给出了确切的SQL语句:
ProjTable projTable;
select generateonly forceliterals from projTable
where ProjTable.Type == ProjType::FixedPrice;
info(projTable.getSQLStatement());
输出是完全合法的SQL,可以复制/粘贴到查询编辑器 这一技巧有助于理解查询生成的SQL:
query.literals(true);
info(query.datasourceNo(1).toString());
在while
循环之前添加行(可能注释掉循环)。输出将是一个几乎合法的SQL语句(尽管有些X++仍然很出色) X++对应的hack给出了确切的SQL语句:
ProjTable projTable;
select generateonly forceliterals from projTable
where ProjTable.Type == ProjType::FixedPrice;
info(projTable.getSQLStatement());
输出是完全合法的SQL,可以复制/粘贴到查询编辑器 错误消息是什么?@Matej不幸的是,没有错误消息。这个查询对我有效:)没有错误。您是否有任何以
0
和ProjEmplTrans
开头的FixedPrice
项目?@Matej我可以注释出关于该项目的addRange,只保留针对该类型的addRange,但仍然没有结果。@Matej,我遇到了一件奇怪的事情。。当键入“类型”字段时,intellisense一点帮助都没有,就像ProjTable中不存在“类型”字段一样。错误消息是什么?@Matej很遗憾,没有错误消息。此查询对我有效:)没有错误。您是否有任何以0
和ProjEmplTrans
开头的FixedPrice
项目?@Matej我可以注释出关于该项目的addRange,只保留针对该类型的addRange,但仍然没有结果。@Matej,我遇到了一件奇怪的事情。。当键入“类型”字段时,intellisense根本没有帮助,就像ProjTable中不存在“类型”字段一样。。