Axapta 使用DMF/DIXF AX 2012 R2导入数据时在目标表中插入重复记录

Axapta 使用DMF/DIXF AX 2012 R2导入数据时在目标表中插入重复记录,axapta,dynamics-ax-2012,Axapta,Dynamics Ax 2012,我有一张桌子 TableMain有两个字段。 字段1:VendRecId 字段2:TestRecId 它存储表Vendtable、TestTable的RECID Tablemain没有索引 我正在使用DIXF/DMF将数据导入MainTable。 很好。当我在导入时在文件中保留重复数据时。 它创建了新记录,而不是更新。 你能让我知道如何做,这样它将更新,而不是 插入重复记录 我不应该修改TableMain我可以使用TableMain实体类中的InsertUpdate方法解决它。 在insertu

我有一张桌子

TableMain有两个字段。 字段1:VendRecId 字段2:TestRecId

它存储表Vendtable、TestTable的RECID

Tablemain没有索引

我正在使用DIXF/DMF将数据导入MainTable。 很好。当我在导入时在文件中保留重复数据时。 它创建了新记录,而不是更新。 你能让我知道如何做,这样它将更新,而不是 插入重复记录


我不应该修改TableMain

我可以使用TableMain实体类中的InsertUpdate方法解决它。 在insertupdate方法中,检查目标缓冲区中的值,并查看TableMain中是否存在记录。如果是,则将callinsertlogic修改为false,否则为true

TableMain TableMain

从tableMain中选择RecId,其中tableMain.Field1==target.fiedl1&&tableMain.field2==target.field2

如果(tablemain.recid) Callinsertlogic=false; 其他的 callinsertlogic=true

然后调用super方法ret=super(..,callinsertlogic,..)

这对我有用


使用这种方法,我可以在记录是新的情况下插入,在现有记录的情况下更新,而无需在tablemain中添加索引。

您提到的
tablemain
MainTable
,它们是同一件事吗?我认为您需要一个唯一的索引,以便
DIXF
知道要
update
更新哪些记录……否则它将如何知道需要更新的字段的组成部分或键是什么?是的,两者都是相同的。好啊所以除了创建一个索引之外没有其他方法了?我必须深入研究DIXF代码,但是它如何知道哪个字段需要更新呢?如果您有第1行(
1,1
)和第2行(
1,2
),并且您希望使用具有(
1,3
)的数据进行更新。它如何知道这是一个新记录,或者你正在更新其他行中的一行,等等。我只是看不出有任何逻辑方法可以做到这一点。是的,正确。根据一些限制,我不允许更改TableMain,所以请检查是否有其他方法。谢谢你的信息。