我创建了一个自定义 DAC,其中包含一个 BranchID 字段。客户端对该字段的要求是默认插入值 0。该字段定义为 KeyField,但未定义 PXDefault 属性。我使用 PXRowPersisting 事件处理程序,以便在 0 的情况下设置值。我使用 ListView 屏幕,以便返回记录。但不返回任何记录。我注意到在 SQL 跟踪中,过滤器应用于 BranchID 字段:
AND ([MyCustomTable].BranchID IS NULL OR [MyCustomTable].BranchID IN (16, 17, 20))
为什么要添加此过滤器?
1 回答
0
对于包含BranchID或UsrBranchID列的任何表,框架会自动将BranchID条件包含在Where子句中。无论对 DAC 字段应用什么属性,如果将特定 DAC 绑定到包含BranchID或UsrBranchID列的表,BranchID条件将添加到为该表生成的所有Where子句中。
对于您的特定场景,一个可能的解决方案是将BranchID列重命名为不同于BranchID或UsrBranchID的名称。如果您需要对自定义 DAC 强制应用基于分支的访问限制,只需将MatchWithBranch<MyDAC.myBranchID>
运算符添加到 BQL 查询中即可。
于 2018-02-23T18:18:15.713 回答