Phi*_*ich 0 x++ axapta import-from-csv dynamics-ax-2012
我正在尝试从CSV文件将一些值导入AX(GEACAccounts)中的自定义表.
现在,下面的代码按预期工作,除非我尝试加载包含表中已存在的GEACaccount(容器项#3)编号的CSV文件.在这种情况下,AX抛出一个错误,说"将记录插入表中时出错.记录已存在.
在我看来,这个错误正在发生,因为表上有一些设置不允许表中的重复值,但我不知道这个设置可能是什么.将不同的字段设置为主键(RecID).GEACAccount字段也与另一个表相关.这会导致我的错误或其他什么?
此外,此功能是正确的,此表上应该只允许一个唯一的GEACAccount值.我只是问,因为我很好奇这可能会受到控制.
任何关于下一步的建议都将不胜感激.
代码如下.
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");
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢,
菲尔
转到AOT,找到GEACAccounts表,展开要查找的节点Indexes并右键单击任何Index,然后单击"属性"以打开属性窗口.
单击每个上/下Index并查看属性以查看是否AllowDuplicates = No以及对于不允许重复项的属性,展开它们并查看哪些字段构成唯一键.
| 归档时间: |
|
| 查看次数: |
1696 次 |
| 最近记录: |