2012-05-21 86 views
1

我问类似这样前面(How to use RecId as a foreign key in a form)一个问题,但想远一点探索它在更复杂的情况。Dynamics AX的2012:翻译RecId成价值

更换键的作用很大,当你有建立索引,并允许设置为没有重复,但他们似乎并不多字段索引在所有的工作,或者当允许重复设置为yes。

有没有办法,以编程方式,使用翻译的值替换网格中的外键不使用替换键?我试着编写一个显示方法来覆盖这个字段,但是一些奇怪的行为导致了 - 字段在网格中移动,并且显示方法不知道要使用哪一行,因此整个列中的所有值都是相同的。

表A:鲍勃:1,萨利:1,苏:3 表B:1:苹果,2:苹果,3:橙子 “人” 被绑定到自己喜欢的 “食物” 的食品RecId ,引用人民表。假设其他列中有其他数据使这些记录具有唯一性,因此不可能合并“1:苹果”和“2:苹果”。

看来应该有一种方法来编写一种显示方法来覆盖网格中的字段值。有什么建议么?示例代码?

由于

回答

4

首先,替代FK更换时(或者至少应)与复合键的工作(例如,{名字,姓氏})。

其次,你的国家,有“其他列中产生额外的数据”,使这些独特记录......那么,为什么不这些列正与食物的名字,形成一个备用键组合?数据模型似乎不正确(或者至少一些元数据与您所陈述的条件不一致)

第三,可以选择任何字段组作为Reference Group控件上的ReplacementFieldGroup。只有这一点,你可以基本上做任何你想做的事情。也就是说,我强烈建议您尽可能使用替代密钥作为您的替换字段组,因为代理FK替换的语义。

流速:

1)用户类型的值(一个或多个)插入基准组。

2)用户选项卡。

3)用户输入的值用于查找相关表中的记录。

4A)如果值(一个或多个)输入的用户的被唯一地映射到该记录被选择,否则记录,

4B)如果值键入的用户不是唯一的被呈现的查找,以允许用户选择他们“意味着什么”的记录。请注意,查找必须提供一组唯一可识别的记录,以便用户知道要选择哪个记录(如果记录在查找中全都看起来相同,那么他们将不知道应该选择什么地方)

5)成功解析类型值后,记录将在源窗体上重新设置。

鉴于此流程,很明显,如果表格上没有唯一的索引(键),步骤3-5将被打破。(如何被用户应该指定一个唯一的参考记录,如果记录有被唯一标识,绝非(假设你不想显示RecId用户)???)

在特殊情况下您决定仍然希望使用非唯一索引作为替换字段组必须实施resolveReference和lookupReference以为用户提供唯一的解析/查找体验(以处理上述流程中的步骤3-5)。注意:这种常见的用例是希望有效地消除参考组中显示的非选择性字段,而是让一些外部上下文或模式隐式设置该值。例如,如果备用关键是{大小,颜色},一个可能让“颜色”全球背景下的形式 - 或许通过让用户选择一种颜色在表单的顶部 - 只有让用户输入尺寸成参考组...可以通过resolveReference和lookupReference覆盖隐式添加颜色。

+0

感谢您的详细响应。我会在早上深入研究,看看我能否实施你的建议。不幸的是,我的例子在表格数据上可能过于简单。该表具有非常特定的目的,因此RecId成为表格中唯一真正唯一的字段。 – Brad

+0

工作。感谢你的协助。 – Brad

+1

在两列替换键中,是否有一种方法可以在表单或网格中显示时抑制两个值中的一个值?我们的索引由一列包含文本数据,另一列包含不应显示的幕后数据。 – Brad