我有一个选择器定义如下:
[PXSelector(typeof(Search2<xTACTaxDocument.iD,
InnerJoin<xTACEntityMappingEIN,
On<xTACTaxDocument.clientEINID, Equal<xTACEntityMappingEIN.iD>>,
InnerJoin<xTACEntityMappingEIN1,
On<xTACTaxDocument.investmentEINID, Equal<xTACEntityMappingEIN1.iD>>>>>),
typeof(xTACTaxDocument.iD),
typeof(xTACTaxDocument.formID),
typeof(xTACTaxDocument.year),
typeof(xTACEntityMappingEIN.eIN),
typeof(xTACEntityMappingEIN1.eIN))]
我在下面定义一个别名DAC(重新定义我需要使用的字段):
[Serializable]
public class xTACEntityMappingEIN1 : xTACEntityMappingEIN
{
public abstract new class iD : IBqlField { }
public abstract new class eIN : IBqlField { }
}
我的问题是 - 由于原始的ein和别名的DAC ein字段具有相同的名称 - 是否可以 - 仅仅在显示的网格中 - 重命名第二个?或者,理想情况下,重命名它们?在intellisense的任何地方都没有看到这个选项...
这是我想要做的事情(参见别名字段):
select xTACTaxDocument.iD
,xTACTaxDocument.FormID
,xTACTaxDocument.Year
,xTACEntityMappingEIN.EIN as 'ClientEIN'
,xTACEntityMappingEIN1.EIN as 'InvestmentEIN'
from xTACTaxDocument
Inner Join xTACEntityMappingEIN
On xTACTaxDocument.clientEINID = xTACEntityMappingEIN.iD
Inner Join xTACEntityMappingEIN xTACEntityMappingEIN1
On xTACTaxDocument.investmentEINID = xTACEntityMappingEIN1.iD
答案 0 :(得分:1)
唯一的选择是在xTACEntityMappingEIN1 DAC中另外覆盖EIN属性,以在PXUIFieldAttribute中使用不同的DisplayName:
[Serializable]
public class xTACEntityMappingEIN1 : xTACEntityMappingEIN
{
public abstract new class iD : IBqlField { }
public abstract new class eIN : IBqlField { }
[PXDBString(50, IsUnicode = true, IsKey = true)]
[PXUIField(DisplayName = "Investment EIN")]
public override string EIN { get; set; }
}
请注意,在上面的代码片段中,我随机选择了EIN字段的字符串类型。理想情况下,除了PXUIFieldAttribute的DisplayName属性值外,xTACEntityMappingEIN和xTACEntityMappingEIN1中的EIN字段属性应该接近相同。
答案 1 :(得分:0)
DAC名称必须是&#34;别名&#34;一张桌子。您不能像在SQL中那样设置别名,但是您可以声明一个继承源类的新类,为其提供一个新的名称&#34;用于查询。我在这里有一个类似的Q&amp; A:Acumatica BQL Query with the same table more than once
在继承的类中,您可以根据需要将字段的显示名称更改为&#34;别名&#34;重复的字段名称。
这是一个快速未经测试的样本:
[Serializable]
public class xTACEntityMappingEINClient : xTACEntityMappingEIN
{
//Override field to set display name = "ClientEIN"
//[PXUIField(DisplayName = "ClientEIN")]
}
[Serializable]
public class xTACEntityMappingEINInvestment : xTACEntityMappingEIN
{
//Override field to set display name = "InvestmentEIN"
//[PXUIField(DisplayName = "InvestmentEIN")]
}
[PXSelector(typeof(Search2<xTACTaxDocument.iD,
InnerJoin<xTACEntityMappingEINClient,
On<xTACTaxDocument.clientEINID, Equal<xTACEntityMappingEINClient.iD>>,
InnerJoin<xTACEntityMappingEINInvestment ,
On<xTACTaxDocument.investmentEINID, Equal<xTACEntityMappingEINInvestment.iD>>>>>),
typeof(xTACTaxDocument.iD),
typeof(xTACTaxDocument.formID),
typeof(xTACTaxDocument.year),
typeof(xTACEntityMappingEINClient.eIN),
typeof(xTACEntityMappingEINInvestment .eIN))]