Split String in Dynamics AX

Posted by Alvin You
2014. 9. 10. 22:44 Dynamics AX/Development

프로그램 개발을 하다보면 많은 문자열 함수와 부딪히게 됩니다. 그 중 입력 받은 문자열을 특정 구분 문자를 통해서 문자열을 쪼개고 다시 그 값을 다른 계산이나 데이터베이스에 넣게 되는 작업을 많이 진행하게 됩니다.

그렇다면, 위와 같은 작업을 X++에서는 어떻게 진행할 수 있을까요? 많은 방법들이 있겠지만 아래 6가지 방법 중 본인이 편안하게 사용할 수 있는 방법을 가져다가 사용하면 될 것 같습니다.

1. 구분값 위치를 계산해서 문자열을 쪼개는 방법

static void splitString_old(Args _args)

{

    str input = "Minho,Ricky,Hansuk,Sangwook";

    str seperator = ",";

    int lenInput = strLen(input);

    int nextPos;

    int lastPos = 1;

    str result;

    ;

 

    do

    {

        nextPos = strFind(input, seperator, nextPos + 1, lenInput - nextPos);

        if (nextPos == 0)

            nextPos = lenInput+1;

        result = subStr(input, lastPos, nextPos-lastPos);

        info(result);

 

        lastPos = nextPos+1;

    }

    while (nextPos != lenInput+1);

}

2. List Class 사용

static void splitString_list(Args _args)

{

    str input = "Minho,Ricky,Hansuk,Sangwook";

    str separator = ",";

    str result;

    List list;

    ListEnumerator le;

    ;

   

    list = new List(Types::String);

    list = strSplit(input, separator);

    le = list.getEnumerator();

   

    while ( le.moveNext())

    {

        result = le.current();

        info(result);

    }

 

}

3. Container Class 사용

static void splitString_con2str(Args _args)

{

    str input = "Minho,Ricky,Hansuk,Sangwook";

    str separator = ",";

    str result;

    container cont;

    int i;

    ;

   

    cont = str2con(input, separator);

    for (i=1; i <= conLen(cont); i++)

    {

        result = conPeek(cont, i);

        info(result);

    }

}

4. TextBuffer Class 사용

 

static void splitString_textBuffer(Args _args)

{

    str input = "Minho,Ricky,Hansuk,Sangwook";

    str separator = ",";

    str result;

    TextBuffer tb;

    ;

   

    tb = new TextBuffer();

    tb.ignoreCase(true);

    tb.regularExpressions(false);

   

    tb.setText(input);

    while ( tb.nextToken(false, separator))

    {

        result = tb.token();

        info(result);

    }

}

5. Regular Expression 사용

static void splitString_regEx(Args _args)

{

    str input = "Minho,Ricky,Hansuk,Sangwook";

    str separator = "\\,";

    str result;

    int i;

    System.Array resultArr;

    int resultArrLen;

    System.Exception clrException;

    ;

   

    try

    {

        resultArr = System.Text.RegularExpressions.Regex::Split(input, separator);

        resultArrLen = resultArr.get_Length();

       

        for (i=0;i<resultArrLen;++i)

        {

            result = CLRInterop::getAnyTypeForObject(resultArr.GetValue(i));

            info(result);

        }

    }

    catch(Exception::CLRError)

    {

        clrException = CLRInterop::getLastException();

        if(clrException)

        {

            info(CLRInterop::getAnyTypeForObject(clrException.get_Message()));           

        }

    }

}

6. NET String Function 사용

static void splitString_dotNet(Args _args)

{

    System.String input = "Minho,Ricky,Hansuk,Sangwook";

    System.Char[] separator = new System.Char[1]();

    System.Char symbol = System.Char::Parse(',');

    System.String[] result;

    int resultLen;

    int i;

    ;

   

    separator.set_Item(0, symbol);

    result = input.Split(separator);

    resultLen = result.get_Length();

   

    for (i=0;i<resultLen;i++)

    {

        System.Windows.Forms.MessageBox::Show(result.get_Item(i));

    }

}

 

[Powershell]AX 사용자 관리

Posted by Alvin You
2014. 8. 17. 23:58 Dynamics AX

MS가 UNIX 환경의 Shell 환경처럼 많은 Command들을 이용해서 시스템을 관리할 수 있도록 발표한 것이 Powershell 일 것입니다.

Windows 관리에만 사용되던 Powershell을 AX 설치 후 추가된 Microsoft Dynamics AX 2012 Management Shell을 통해서 AX관리에 Powershell을 사용할 수 있습니다.

오늘은 AX 사용자와 관련된 몇 가지 Command를 다뤄 볼 생각입니다.

1. AD(Active Directory) 사용자 및 AX User 생성

New-AXUser -AccountType WindowsUser -AXUserId Alvin –UserDomain "ZSP" -PartitionKey initial Enabled -UserName Alvin -Company ZSPK

2. 사용자 계정 Disable 처리

Disable-AXUser –AXUserId Alvin

3. 사용자 계정에 Role 연결

Add-AXSecurityRoleMember –AxUserId Alvin –AOTName -SYSADMIN-

Korea AX User Group을 만들었습니다.

Posted by Alvin You
2014. 8. 12. 23:46 Dynamics AX

많은 국가에서 AXUG(AX User Group)을 만들어 AX 사용자들간에 정보 교류를 하는 것을 보고, 제가 국내 AX User Group을 만들었습니다.

 

네이버 블로그에 관련 카페를 만들었으며, AXUG 도메인을 등록해 카페 접속을 손쉽게 할 수 있도록 했으니 많은 AX 사용자 또는 관심 있으신분들의 회원 가입 부탁 드리겠습니다.

 

Korea Dynamics AX User Group : http://www.axug.co.kr

 

아직은 컨텐츠가 많이 부족하지만 제 개인 블로그에 있는 내용들이라도 퍼 나르도록 하겠습니다.

 

감사합니다.