2016-04-25 13 views
0

Ich versuche, einige Werte in eine benutzerdefinierte Tabelle in AX (GEACAccounts) aus einer CSV-Datei zu importieren.Microsoft Dynamics AX 2012 X ++ Datensatz kann nicht eingefügt werden. Datensatz existiert bereits Fehler

Nun wird der Code funktioniert wie unten außer erwartet, wenn ich versuche, eine CSV-Datei zu laden, die eine GEACaccount enthält (Container Element # 3) Nummer, die bereits in der Tabelle vorhanden ist. In diesem Fall gibt AX einen Fehler mit der Meldung "Fehler beim Einfügen des Datensatzes in Tabelle. Datensatz ist bereits vorhanden.

Es scheint mir, dass dieser Fehler auftritt, da es einige Einstellungen für die Tabelle gibt, die doppelte Werte in einer Tabelle nicht zulassen, aber ich bin nicht sicher, was diese Einstellung sein könnte. Ein anderes Feld als Primärschlüssel (RecID) gesetzt. Das GEACAccount Feld auch zu einer anderen Tabelle verknüpft ist. könnte dies sonst mein Fehler oder etwas sein, was?

auch , diese Funktionalität ist korrekt, es sollte nur ein eindeutiger Wert von GEACAccount in dieser Tabelle erlaubt sein.Ich frage nur, da ich neugierig bin, wo dies gesteuert werden könnte.

Irgendwelche Ratschläge, wohin Sie als nächstes schauen sollten, wären sehr willkommen.

Code unten.

static void Job11(Args _args) 
{ 
TextIo ioReader; 
FileIOPermission fioPermission; 
str sTempPath; 
GEACAccounts Accounts; 


container readCon; 


try 
{ 
    info("Begin reading file " +'C:\\\\testload.txt'); 

    fioPermission = new FileIOPermission('C:\\\\testload.txt',"RW"); 
    fioPermission.assert(); 

    ioReader = new TextIo('C:\\\\testload.txt',"R"); 
    ioReader.inFieldDelimiter(num2char(44)); 
    ioReader.inRecordDelimiter('\n'); 


    readCon = ioReader.read(); 

    if(ioReader) 
    { 
     //readCon = ioReader.read(); 
     // i++; 

     while(ioReader.status() == IO_Status::Ok) 
     { 
      i++; 


      info(conPeek(readCon,1)); 
      info(conPeek(readCon,2)); 
      info(conPeek(readCon,3)); 
      info(conPeek(readCon,4)); 


      ttsBegin; 
      accounts.clear(); 
      accounts.initValue(); 
      accounts.GEACAccountGroup = 5637144826; 
      accounts.AddlSecType = conPeek(readCon,1); 
      accounts.CashflowMovement = conPeek(readCon,2); 
      accounts.GEACAccountNumber = conPeek(readCon,3); 
      accounts.GEACFlipSign = 0; 
      accounts.SecurityGroup = conPeek(readCon,4); 
      accounts.insert(); 
      ttsCommit; 


     readCon = ioReader.read(); 

     } 
    } 
} 
    catch(Exception::Error) 
    { 
     info("caught exception"); 
    } 

} 

Danke,

Phil

Antwort

5

Zum AOT, finden die GEACAccounts Tabelle, erweitern Sie die Knoten Indexes und der rechten Maustaste auf jeden Index und klicken Sie auf „Eigenschaften“ finden um das Eigenschaftenfenster zu öffnen .

Klicken Sie auf jede Index hoch und schauen Sie sich die Eigenschaften an, um zu sehen, ob AllowDuplicates = No, und für diejenigen, wo Duplikate nicht erlaubt sind, erweitern Sie sie und sehen Sie, welche Felder einen eindeutigen Schlüssel bilden.

+0

Das wäre es. Danke für die Hilfe! –