X++ 相关表上的 select 语句

问题描述 投票:0回答:2

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

salesline tablebuffer = this.cursor();  
while select ProdId, CollectRefProdId from prodtable where prodtable.inventrefid == 'ZPR00000165'
axapta microsoft-dynamics x++ dynamics-ax7
2个回答
4
投票

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

prodtable.inventrefid == 'ZPR00000165'

inventRefId
将是您的
SalesId
,这是
ZS00000011
不是您的
ProdId

下面是一个更正确的查询示例。您可以通过将两个选择连接在一起来优化它,以便获得给定

ProdTable
的所有相关 SalesLine 记录到
all
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));
}

0
投票

抱歉跳到这里。我可以知道在哪里可以找到这个路径[\Data Dictionary\Tables\ProdTable\Relations\SalesOrder]吗?我对 D365 完全陌生,但因为我的公司在 D365 上创建了一个数据湖 1,没有任何数据字典或 ERD,这使我很难制作报告/仪表板。

© www.soinside.com 2019 - 2024. All rights reserved.