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