我有一个项目表,每个项目引用另一个表格中的另一个项目。我们会说物品是人物,相关物品是最喜欢的食物。
表A:Bob:1,Sally:1,Sue:3
表B:1:苹果,2:香蕉,3:橙子
“人民”与食物RecId最喜欢的“食物”联系在一起,在人员表中引用。
我有一个用于编辑人物的表单/网格。有没有办法使网格中的FoodRecId StringView转换其值,以便RecId数字在网格中不可见?
我已经编写了多列查找来轻松处理创建正确的关系,但如果网格中的RecIds可以被隐藏/替换,那么表单将更容易使用。
答案 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