温馨提示:本文翻译自stackoverflow.com,查看原文请点击:axapta - X++ select statement on related tabled
axapta microsoft-dynamics x++ dynamics-ax7

axapta - 有关表的X ++ select语句

发布于 2020-05-05 10:49:04

我需要帮助来从prodtable获取与销售线相关的数据。我的任务是获取与当前salesid相关的所有Prodid。相关字段prodtable.inventrefid == salesline.salesid。但是这些值的加入有点不同,所以我没有数据。Inventrefid有例如。ZPR0000011,销售编号为ZS00000011。

salesline tablebuffer = this.cursor();  
while select ProdId, CollectRefProdId from prodtable where prodtable.inventrefid == 'ZPR00000165'

查看更多

提问者
Radosław Mierzejewski
被浏览
20
Alex Kwitny 2020-02-17 23:58

我立即看到的主要问题是:

prodtable.inventrefid == 'ZPR00000165'

inventRefId是你的SalesIdZS00000011 不是你的ProdId

下面是一个更正确的查询的示例。您可以通过将两个选择结合在一起来优化它,这样就可以将所有相关ProdTable记录获取给定的所有 SalesLine记录SalesId,还可以在查询中指定字段,以免返回整个缓冲区。

SalesLine           salesLine;
ProdTable           prodTable;

/*
This just chooses the first sales line with that salesid. You would need to join these together
if you wanted to do all sales lines in one query.
*/
select firstOnly salesLine
    where salesLine.SalesStatus                 == SalesStatus::Backorder       &&
          salesLine.SalesId                     == 'ZS00000011';

while select prodTable
    where prodTable.InventRefTransId            == salesLine.InventTransId      &&
          prodTable.InventRefId                 == salesLine.SalesId            &&
          prodTable.InventRefType               == InventRefType::Sales
{
    info(strFmt("Found related ProdTable record %1 - %2 (%3)", prodTable.ProdId, prodTable.CollectRefProdId, prodTable.RecId));
}