Axapta 如何在Dynamics AX 2012的内部联接中显示零值?
我有两个表,我已经通过内部连接连接Axapta 如何在Dynamics AX 2012的内部联接中显示零值?,axapta,microsoft-dynamics,dynamics-ax-2012,x++,Axapta,Microsoft Dynamics,Dynamics Ax 2012,X++,我有两个表,我已经通过内部连接连接 qbdsPurchTable = query.addDataSource(tableNum(PurchTable)); qbdsVendPackingSlipTrans = qbdsPurchTable.addDataSource(tableNum(VendPackingSlipTrans)); qbdsVendPackingSlipTrans.fetchmode(Joinmode::InnerJoin); qbdsVendPackingSlipTrans.
qbdsPurchTable = query.addDataSource(tableNum(PurchTable));
qbdsVendPackingSlipTrans = qbdsPurchTable.addDataSource(tableNum(VendPackingSlipTrans));
qbdsVendPackingSlipTrans.fetchmode(Joinmode::InnerJoin);
qbdsVendPackingSlipTrans.addLink(fieldNum(PurchTable, PurchId),fieldNum(VendPackingSlipTrans, OrigPurchId));
qbdsVendPackingSlipTrans.relations(false);
在我的purch表中,它有很多数据,但只有一个在VendPackingSlipTrans上有数据
Purch TableVend装箱单运输
采购采购价格数据1数据21000数据2数据3数据4
我的代码所做的是:
数据2 1000
但我想发生的是
数据10
数据2 1000
数据30
数据40
顺便说一下,我尝试了外部联接,但这是输出
数据10
数据20
数据30
数据40
它没有得到1000的值。如果使用InnerJoin,请小心,查询返回的记录中只有关系为TRUE,因此,只有一条记录是正确的,您只有两条记录之间的匹配
试着用外套
qbdsPurchTable=query.addDataSourcetableNumPurchTable;
qbdsVendPackingSlipTrans=qbdsPurchTable.AddDataSourceTableTable-VendPackingSlipTrans;
qbdsVendPackingSlipTrans.joinModeJoinmode::OuterJoin;
QBDSENDPACKINGSLIPTRANS.addLinkfieldNumPurchTable、PurchId、fieldNumVendPackingSlipTrans、OrigPurchId;
QBDS供应商包装SlipTrans.Relations其他;
以下是一些附加信息:
);
新链接:
新代码-选择所有记录:
QueryRun QueryRun;
可购买的可购买的;
自动包装自动售货机自动包装自动售货机;
QueryBuildDataSource数据源;
查询;
查询=新查询;
datasource=query.addDataSourcetableNumPurchTable;
datasource=datasource.addDataSourcetableNumVendPackingSlipTrans;
joinModeJoinMode::OuterJoin;
datasource.relationstrue;
queryRun=新的QueryRunquery;
while queryRun.next//插入此while循环以测试代码
{
purchTable=queryRun.gettablenumPurchTable;
vendPackingSlipTrans=queryRun.gettablenumVendPackingSlipTrans;
infostrfmt%1–%2,purchTable.PurchId,vendPackingSlipTrans.Price;//插入您的字段
}
我表现出所有的价值 如果使用InnerJoin,请小心,查询返回的记录中只有relation为TRUE,因此,只有一条记录是正确的,只有两条记录匹配
试着用外套
qbdsPurchTable=query.addDataSourcetableNumPurchTable;
qbdsVendPackingSlipTrans=qbdsPurchTable.AddDataSourceTableTable-VendPackingSlipTrans;
qbdsVendPackingSlipTrans.joinModeJoinmode::OuterJoin;
QBDSENDPACKINGSLIPTRANS.addLinkfieldNumPurchTable、PurchId、fieldNumVendPackingSlipTrans、OrigPurchId;
QBDS供应商包装SlipTrans.Relations其他;
以下是一些附加信息:
);
新链接:
新代码-选择所有记录:
QueryRun QueryRun;
可购买的可购买的;
自动包装自动售货机自动包装自动售货机;
QueryBuildDataSource数据源;
查询;
查询=新查询;
datasource=query.addDataSourcetableNumPurchTable;
datasource=datasource.addDataSourcetableNumVendPackingSlipTrans;
joinModeJoinMode::OuterJoin;
datasource.relationstrue;
queryRun=新的QueryRunquery;
while queryRun.next//插入此while循环以测试代码
{
purchTable=queryRun.gettablenumPurchTable;
vendPackingSlipTrans=queryRun.gettablenumVendPackingSlipTrans;
infostrfmt%1–%2,purchTable.PurchId,vendPackingSlipTrans.Price;//插入您的字段
}
我表现出所有的价值 您应该正确指定连接模式,请替换此行
qbdsVendPackingSlipTrans.fetchmode(Joinmode::OuterJoin);
与
您应该正确指定连接模式,请替换此行
qbdsVendPackingSlipTrans.fetchmode(Joinmode::OuterJoin);
与
嗨,先生,什么都没发生。它只显示了零,没有得到1000的值。你能显示你的代码来检索查询执行的结果吗?嗨,先生,什么都没发生。它只显示零,没有得到1000的值。你能显示你检索查询执行结果的代码吗?嗨,先生!谢谢你的链接。然而,正如我的帖子所指出的,我已经尝试退出,但它只显示了零。嗨,Michal Z,我很抱歉,我没有很好地回答你的问题。我无法创建测试用例,但如果您尝试使用fetchMode或类似的方式,请参见以下链接:?我认为问题在于何时构造查询。干得好!嗨,MichaelZ,我想找到了任何可能的方法…请参阅附加的新代码,其中只有datasource QueryBuildDataSource datasource;嗨,先生!谢谢你的链接。然而,正如我的帖子所指出的,我已经尝试退出,但它只显示了零。嗨,Michal Z,我很抱歉,我没有很好地回答你的问题。我无法创建测试用例,但如果您尝试使用fetchMode或类似的方式,请参见以下链接:?我认为问题在于何时构造查询。干得好!嗨,MichaelZ,我想找到了任何可能的方法…请参阅附加的新代码,其中只有datasource QueryBuildDataSource datasource;你能把这封信寄出去吗?请把它写进你的问题中,而不是写评论。你能把它贴出来吗?请把它写进你的问题,而不是写评论。