AX 2009 - 附加一个角色

时间:2018-01-18 19:47:11

标签: axapta dynamics-ax-2009

我正在拉/查询表中的数据,我正在获取重复数据。我想在dup的值的末尾附加一个字符('A'和'B'。

以下是代码的片段:

while select count(recid) from amtExport
       group by billOfLadingId
        where amtExport.createddatetime1 >= utcDT
    {
       if (amtExport.RecId == 2)
        {
           while select amtExport1
                where amtExport1.billOfLadingId == amtExport.billOfLadingId
              {
                 info(amtExport1.billOfLadingId);
              }

            }
        }

输出:
00232763
00232763
00232793
00232793
00232800
00232800
...... ......

所以,我想在值的末尾追加一个字符,比如
00232763A
00232763B
00232793A
00232793B
00232800A
00232800B
....... ......

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

足够简单......我注意到的一件事是你正在做RecId == 2,但是如果有两个以上的重复,它们将被跳过。请考虑更改为RecId > 1

此外,没有错误检查,因此如果有超过26个重复,显然将使用Z之后的Ascii字符。

AMTExport       amtExport, amtExport1;
ASCII           asciiLetter;

while select count(RecId) from amtExport
    group by billOfLadingId
{
    if (amtExport.RecId == 2) // Should this be .RecId > 1?
    {
        asciiLetter = 65; // Reset letter to 'A'
        while select amtExport1
            where amtExport1.billOfLadingId == amtExport.billOfLadingId
        {
            info(amtExport.billOfLadingId + num2char(asciiLetter));
            asciiLetter++; // Increase the ascii letter
        }
    }
}

答案 1 :(得分:0)

我知道我很傻但是如果你只需要billOfLadingId而没有来自amtExport的其他字段那么你就不必做第二个while select

while select billOfLadingId, count(recid) from amtExport
       group by billOfLadingId
        where amtExport.createddatetime1 >= utcDT
    {
       if (amtExport.RecId > 1)
        {
           /*
           while select amtExport1
                where amtExport1.billOfLadingId == amtExport.billOfLadingId
              {
                 info(amtExport1.billOfLadingId);
              }
           */

           for (i = 1; i <= amtExport.RecId; i++)
           {
              info(amtExport1.billOfLadingId + num2char(64 + i));
           }
        }
    }