查看委托构建正确 SQL,未返回任何记录
View Delegate Building Correct SQL, Returning No Records
我有一个查询屏幕,我们在其中通过过滤器中的 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
属性 给了我预期的结果。
我有一个查询屏幕,我们在其中通过过滤器中的 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
属性 给了我预期的结果。