acumatica - 如何使用 Coalesce 和 PXProjection 的示例?
问题描述
(简短的)故事:
有一个现有的设置记录出于业务原因,现在需要选择在站点级别覆盖设置设置所以,有第二个表,具有相同的字段(除了差异,无关紧要),定义了键作为“站点ID”
问题 - 现在想要一个我可以随时使用的合并视图,为特定站点加载正确的值 这将允许我搜索“原始”单个设置的所有用途,并根据需要进行替换
因此,由于不应该使用 SQL 视图,因此尝试通过 PXProjection 创建新的 DAC,并带有以下标头:
[PXProjection(typeof(Select2<INSite,
LeftJoin<MQMJINSiteDefaults,On<MQMJINSiteDefaults.siteID,Equal<INSite.siteID>>,
CrossJoin<MQMJSetup>>>))]
[PXBreakInheritance]
[Serializable()]
[PXCacheName(Messages.CacheMQMJINSiteDefaults)]
public class MQMJINSiteSetup : IBqlTable
表用法:
- INSite - 默认 acumatica 表(例如始终存在)
- MQMJINSiteDefaults - 站点级别设置(有时在那里)
- MQMJSetup - 原始设置(可能假设始终存在,单条记录)
SQL 确实返回了所需的值(通过 Profiler 跟踪)左连接有效,交叉连接有效
但是使用通用查询,没有得到价值
尝试过的许多事情包括:
[PXSelector(typeof(Search<Numbering.numberingID>), DescriptionField = typeof(Numbering.descr))]
[PXUIField(DisplayName = "Additional Lab Results ID")]
[PXDependsOnFields(typeof(MQMJINSiteDefaults.addLabResultsNumberingID), typeof(MQMJSetup.addLabResultsNumberingID))]
// Ran for single value, get either the Site level or main Setup
//[PXDBString(10, IsUnicode = true, BqlField = typeof(MQMJSetup.addLabResultsNumberingID))]
// [PXDBString(10, IsUnicode = true, BqlField = typeof(MQMJINSiteDefaults.addLabResultsNumberingID))]
// Nothing below seems to work (e.g. No values)
// [PXDBString(10, IsUnicode = true, BqlField = typeof(IsNull<Selector<MQMJINSiteDefaults.addLabResultsNumberingID, MQMJSetup.addLabResultsNumberingID>, MQMJINSiteDefaults.addLabResultsNumberingID>))]
[PXString(10, IsUnicode = true)]
//[PXUnboundDefault(typeof( IsNull<Selector<MQMJINSiteDefaults.addLabResultsNumberingID, MQMJSetup.addLabResultsNumberingID>, MQMJINSiteDefaults.addLabResultsNumberingID>
// ), PersistingCheck = PXPersistingCheck.Nothing)]
//[PXUnboundDefault(typeof(Coalesce<
// Search<MQMJINSiteDefaults.addLabResultsNumberingID, Where<MQMJINSiteDefaults.addLabResultsNumberingID,IsNotNull>>,
// Search<MQMJSetup.addLabResultsNumberingID>>
// ))]
[PXUnboundDefault(typeof(Switch<
Case<
Where<Current2<MQMJINSiteDefaults.addLabResultsNumberingID>, IsNotNull>, Current2<MQMJINSiteDefaults.addLabResultsNumberingID>>,
Current2<MQMJSetup.addLabResultsNumberingID>>), PersistingCheck = PXPersistingCheck.Nothing)]
public virtual string AddLabResultsNumberingID { get; set; }
关键成功需求:
- 必须按顺序检查 - 需要 MQMJINSiteDefaults 值 IF NOT NULL(理想情况下为 null 或为空,但我不会为 null)
- 必须为相当多的字段工作 - 我有大约 200 个,并且希望“根据需要”完成计算,而不是对整个记录进行评估(很好,但需要值)
尝试搜索样本,没有找到太多,这就是我在这里问的原因。在 SQL 中,简单 - IsNull 或 Coalesce,取决于值的数量
任何有用的建议或建议
解决方案
推荐阅读
- angular - 生成命令需要在 Angular 项目中运行,但找不到项目定义
- ruby-on-rails - Rails 5.2 - 如何将报表模型与两个用户相关联
- android - Revision not found in React-Native,Android
- html5-canvas - 如何为 IText Fabricjs 中的每个项目设置绝对位置
- android - 如何使用 Glide 设置 CollapsingToolbarLayout 背景?
- javascript - 函数构造函数 - 使用原型添加函数给出 - Uncaught SyntaxError: Unexpected token {
- docker - 如何在没有 Internet 和 Intranet yum 存储库的情况下安装 docker-ce?
- keras - How to dynamically select different branches in Keras model, based on the input?
- javascript - 选择选项html内的颜色框
- c# - 问题反序列化条带 json 响应