Acumatica自定义选择器SQL错误 - 关键字附近的语法不正确

时间:2017-10-06 14:04:14

标签: acumatica

我正在尝试创建自定义零件选择器,以便在没有选择供应商时搜索所有记录,如果选择了供应商我想过滤选择器的结果,只包括选择供应商的零件。

使用PXCustomSelectorAttribute:

SQL错误:关键字“AND”附近的语法不正确            关键字“ORDER”附近的语法不正确

       [PXNonInstantiatedExtension]
public class SO_SOLine_ExistingColumn : PXCacheExtension<PX.Objects.SO.SOLine>
{
    #region InventoryID  

    [PXMergeAttributes(Method = MergeMethod.Replace)] //was append
    [PXUIField(DisplayName = "Part #")]
    [PartSelector(typeof(SOLineExt.usrCusVendor))]
    public int? InventoryID { get; set; }

    #endregion
}

public class PartSelector : PXCustomSelectorAttribute
{

    [Serializable]
    [PXProjection(typeof(
         Select2<atcVendorItem,
             LeftJoin<InventoryItem,
                   On<InventoryItem.inventoryCD, Equal<atcVendorItem.inventoryCD>, And<InventoryItem.inventoryID, Equal<atcVendorItem.inventoryID>>>>>), Persistent = false)]
    public class atcPartView : IBqlTable
    {
        // DAC W/Inventory Item Table mapped and joined with Vendor Items
    }


    //Selected table
    private Type _MfgField;


    ////way to have multiple description fields 
    public PartSelector(Type MfgField) : base(typeof(atcPartView.inventoryID))
    {
        _MfgField = MfgField;

    }

    protected virtual IEnumerable GetRecords()
    {
        var cache = this._Graph.Caches[BqlCommand.GetItemType(_MfgField)];
        var cbs = (BAccount)cache.Current;

        // make mfgfield 
        if (cbs != null)
        {
            foreach (atcPartView p in PXSelect<atcPartView, Where<atcPartView.vendorID, Equal<Required<SOLineExt.usrMfg>>>>.Select(_Graph, cbs.BAccountID))
            {
                yield return p;
            }

        }
        else
        {
            foreach (atcPartView p in PXSelect<atcPartView, Where<atcPartView.vendorID, IsNotNull>>.Select(_Graph))
            {
                yield return p;
            }

        }

    }
}

enter image description here

1 个答案:

答案 0 :(得分:0)

我在Visual Studio中调试时能够找到另一个异常, 我的问题是因为我在引用SOLine扩展时尝试将该字段作为BAccount。改变演员阵容修复了我的问题