查看委托生成正确的SQL,不返回任何记录



我有一个查询屏幕,在该屏幕中,我们通过过滤器中的VendorID或FinPeriodID过滤来自自定义DAC的历史AP记录。

我已经创建了一个View Delegate来处理动态筛选逻辑,并通过调试确认它被正确命中,并在适当的WhereAnd语句中添加Filter的当前值。直接在数据库中运行等效的SQL语句会返回正确的记录,但是View Delegate最终不会向屏幕返回任何记录。

基本视图定义为:public PXSelectReadonly<AAAPDoc> Docs;

View Delegate定义为:

protected virtual IEnumerable<AAAPDoc> docs()
{
AAAPHistoricalFilter filter = Filter.Current;
PXSelectBase<AAAPDoc> cmd = new PXSelectReadonly<AAAPDoc>(this);
if (filter.VendorID.HasValue)
{
cmd.WhereAnd<Where<AAAPDoc.vendorID, Equal<Current<AAAPHistoricalFilter.vendorID>>>>();
}
if (filter.FinPeriodID.HasValue)
{
cmd.WhereAnd<Where<AAAPDoc.finPeriodID, Equal<Current<AAAPHistoricalFilter.finPeriodID>>>>();
}
foreach (AAAPDoc record in cmd.Select())
{
yield return record;
}
}

滤波器DAC

[Serializable]
[PXHidden]
public class AAAPHistoricalFilter : IBqlTable
{
#region VendorID        
public abstract class vendorID : BqlInt.Field<vendorID>
{
}
[Vendor(IsDBField = false, DisplayName = "Vendor ID")]  
public virtual int? VendorID { get; set; }
#endregion
...

编辑:使用原始部分滤波器DAC更新,为解决方案提供上下文

事实证明,这是我的滤波器DAC的问题。我将[Vendor]属性与属性IsDBField = false一起使用。从属性中完全删除IsDbField属性得到了预期的结果。

最新更新