2016-08-02 6 views
1

テーブルがあります。DMF/DIXFを使用してデータをインポートする際に、ターゲットテーブルに重複レコードが挿入されるAX 2012 R2

2つのフィールドを持つTableMain。 フィールド1:VendRecId フィールド2:TestRecId

テーブルVendtable、TestTableのリシードを格納します。

Tablemainにはインデックスがありません。

DIXF/DMFを使用してMainTableにデータをインポートしています。 そのインポートの罰金。インポート中にファイルに重複したデータを保存したとき。 更新する代わりに新しいレコードを作成しました。 重複レコードを挿入する代わりに更新する方法を教えてください。

は、私は私がTableMainエンティティクラスでのinsertUpdateメソッドを使用して、それを解決することができていますTableMain

+0

あなたは 'TableMain'と' MainTable'と言いますが、これは同じですか? 'DIXF'が' '更新するレコードを知るためには一意のインデックスが必要だと思います...そうでなければ、更新が必要なフィールドやキーが何であるかを知る方法は? –

+0

はい、どちらも同じです。 OK。したがって、インデックスを作成する以外の方法はありませんか? – Raj

+0

さて、私はDIXFコードを掘り下げる必要がありますが、更新する必要があるフィールドをどのように知っていますか?行1( '1、1')と行2(' 1,2')があり、( '1,3')を持つデータで更新したい場合。それが新しいレコードか、他の行のどれかを更新しているかどうかはどうやって知ることができますか?私はそれができる論理的な方法を見ていません。 –

答えて

1

を変更することになっていません。 insertupdateメソッドでは、ターゲットバッファから値をチェックし、レコードがTableMainに存在するかどうかを確認します。 yesの場合は、callinsertlogicをfalseに変更し、そうでない場合はtrueにします。

TableMain tableMain;

tableMainからRecIdを選択します。tableMain .Field1 == target.fiedl1 & & tablemain.field2 == target.field2;

if(tablemain.recid) Callinsertlogic = false; else callinsertlogic = true;

スーパーメソッドret = super(..、callinsertlogic、..)を呼び出します。

これは私のために働いた。

この方法を使用すると、レコードが新規の場合は挿入できますが、既存のレコードがあれば更新できます(tablemainにインデックスを追加せずに)。

関連する問題