如何将RecId用作表单中的外键

时间:2012-04-23 12:59:08

标签: grid x++ axapta dynamics-ax-2012

我有一个项目表,每个项目引用另一个表格中的另一个项目。我们会说物品是人物,相关物品是最喜欢的食物。

表A:Bob:1,Sally:1,Sue:3

表B:1:苹果,2:香蕉,3:橙子

“人民”与食物RecId最喜欢的“食物”联系在一起,在人员表中引用。

我有一个用于编辑人物的表单/网格。有没有办法使网格中的FoodRecId StringView转换其值,以便RecId数字在网格中不可见?

我已经编写了多列查找来轻松处理创建正确的关系,但如果网格中的RecIds可以被隐藏/替换,那么表单将更容易使用。

2 个答案:

答案 0 :(得分:2)

如果您使用AX 2012,则很容易:使用surrogate keys。 使用RecId作为外键现在是最佳实践!

更新:具体步骤可在AX Musings

中找到

如果使用旧版本的AX,请查看ContactPersonRecId表单中CustTable的使用情况。 它涉及在使用其他编辑字段recId作为关键字时隐藏表单中的ContactPersonName字段。

虽然使用RecId作为外键不符合最佳实践,但由于手动处理代理键的复杂性,通常可以避免使用它。

答案 1 :(得分:1)

布拉德,

ReplacementKey 是您的解决方案。

现在可以在AX 2012中定义父/子关系,而无需在两个表中定义相同的主键。例如,直到AX 2009,标题/行关系过去基于SalesTable和SalesLine中的SalesId字段之类的唯一键存在。在AX 2012中不再需要这样。此类关系在RecIds上定义,值根据 ReplacementKey 上定义的内容显示在表单上(这就是为什么名称为Replacement!) 您可以显示任何其他类似名称的字段,而不是RecId。

查看我的博客! http://amannain.blogspot.in/2012/04/table-relationships-learning-with.html