X++选择相关表格上的语句



我需要帮助从prodtable中获取与salesline相关的数据。我的任务是获取所有与当前salesid相关的Prodid。相关字段prodtable.inventrefid==salesline.salesid。但是值有点不同,所以我没有得到任何数据。发明有例如ZPR0000011,销售id为ZS00000011。

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

我马上看到的主要问题是:

prodtable.inventrefid == 'ZPR00000165'

inventRefId将是您的SalesId,即ZS00000011而不是您的ProdId

下面是一个更正确的查询示例。您可以通过将两个选择连接在一起进行细化,以便将所有相关的ProdTable记录获取到给定SalesId所有SalesLine记录,还可以在查询中指定字段,从而不会返回整个缓冲区。

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));
}

最新更新