【问题标题】:X++ select statement on related tabled相关表上的 X++ 选择语句
【发布时间】:2020-02-17 12:36:02
【问题描述】:

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

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

【问题讨论】:

  • 我不确定我是否理解您的问题,但您应该在选择语句中包含InventRefType::SalesSalesStatus::Backorder。看看表ProdTable的关系SalesOrder
  • 你说与salesline有关,也与salesid有关。这是两种不同的说法,是什么?你为什么要this.cursor()?这意味着您处于表单数据源中...这会导致更多问题,您是在尝试创建链接还是要对数据做什么?
  • 目前我只是尝试获取数据。我现在对 formstr 和 formdatasourcestrn 非常熟悉,但我不太了解使用它们的区别、硬币和优点。使用 cursor() 方法对我来说更容易,所以我选择了 formsdatasourcestr。我想获取数据,检查它,然后启用一个复选框(或什么都不做)。

标签: axapta microsoft-dynamics x++ dynamics-ax7


【解决方案1】:

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

prodtable.inventrefid == 'ZPR00000165'

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

下面是一个更正确的查询示例。您可以通过将两个选择连接在一起来优化它,以便将所有相关的 ProdTable 记录获取到 all 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));
}

【讨论】:

  • 问题是我不知道我需要在 select 中使用 Backorder 和 ::Sales。而且由于我刚做 prodtable.inventrefid == salesline.salesid 时它没有用,所以我在想问题是 salesid 都是 ZS 并且在 refid ZPR 中..
  • @RadosławMierzejewski 在尝试创建选择语句时查看表关系很有帮助。请参阅\Data Dictionary\Tables\ProdTable\Relations\SalesOrder 以了解我如何知道选择中需要这些。很高兴我能帮上忙!
猜你喜欢
  • 2015-07-01
  • 2023-03-22
  • 2010-12-23
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
相关资源
最近更新 更多