使用BXL语句中的强制转换使用PXSelectJoin联接表

时间:2018-11-13 06:26:41

标签: acumatica

我需要为下面的SQL查询编写一个BQL语句

<div class='layout'>
  <div class="header">
    domain.com
  </div>
  <div class="primary">
    Primary Content (centre column)
  </div>
  <div class="left-col">
    Left hand content
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio.</p>
  </div>
  <div class="right-col">
    Right hand content
  </div>
  <div class="footer">
    <strong>&copy; All rights reserved</strong>
  </div>
</div>

CSAttribute中的EntityClassID和清单中的ItemClassID是不同的类型。如何使用BQL联接表。

1 个答案:

答案 0 :(得分:0)

尝试创建一个自定义视图,该视图以ITEMCLASSID强制转换表示INVENTORYITEM表。但是,不建议使用自定义视图。而是尝试创建一个PXProjection以将INVENTORYITEM表表示为usrINVENTORYITEM。然后使用PXString转换Int?到一个字符串。暴露后,您可以如下所示计算BQL。

#region InventoryItem - projection
[PXProjection(typeof(Select<InventoryItem>), Persistent = false)]
public partial class usrInventoryItem : InventoryItem
{

    #region ItemClassIDStr
    [PXString(10, IsUnicode = true)]
    [PXUIField(DisplayName = "ItemClassIDStr", Visibility = PXUIVisibility.SelectorVisible)]
    public virtual string ItemClassIDStr
    {
        get
        {
            return $"{ItemClassID}";
        }
        set
        {
            this.ItemClassIDStr = value;
        }
    }
    public abstract class itemClassIDStr : IBqlField { }
    #endregion
}
#endregion

然后是BQL语句:

// basic example of your join.
 public PXSelectJoin<CSAttributeGroup, LeftJoin<usrInventoryItem,
            On<usrInventoryItem.itemClassIDStr, Equal<CSAttributeGroup.entityClassID>>>> ExampleJoin;