Archive for Kasım, 2013

Dynamics Ax’ta bir metni başlık formatına (Title Case) çevirmek

Merhaba,

Basit bir hata sonucu axa aktarılan büyük bir verinin tamamen büyük harfle oluştuğunu gördüm. İlgili departman bu verinin başlık formatında olmasını istedi. Veriyi tekrar aktarmaktansa güncellemeyi daha doğru buldum . Ax’ta büyük ve küçük harfe çeviren metotlar var ancak başlık formatına (Title Case) çeviren bir metot yok . Bu yüzden .Net’ten yararlanarak bu işlemi yaptım. Örnek kod şu şekilde:

static void FD_ChangeCase(Args _args)
{
    System.String                       myString ;
    System.Globalization.TextInfo       TextInfo ;
    System.Globalization.CultureInfo    CultureInfo ;

    myString    = "PERAkeNDE SATIŞ TEksTİL SEgmENTİ";
    CultureInfo = new System.Globalization.CultureInfo("tr");
    TextInfo    = CultureInfo.get_TextInfo();

    info(  TextInfo.ToTitleCase(TextInfo.ToLower( myString ))) ;
    info(  TextInfo.ToLower( myString )) ;
   // info(strLwr("PERAkeNDE SATIŞ TEksTİL SEgmENTİ"));
    info(  TextInfo.ToUpper( myString )) ;
   // info(strUpr("PERAkeNDE SATIŞ TEksTİL SEgmENTİ"));

}

Selamlar.

Dynamics Ax’ta Regular expression kullanımına örnekler

Merhaba

Birinci örnekte metoda gönderilen metinin nokta(). ve tire(-)  haricinde özel karakter içerip içermediğini kontrol ediyoruz.

static boolean isProductNumberValid(EcoResProductNumber _ecoResProductNumber )
{
    Str MatchPattern ="[^a-zA-Z0-9\-.]";
    System.Text.RegularExpressions.Match myMatch;
    ;

    myMatch = System.Text.RegularExpressions.Regex::Match(_ecoResProductNumber,
                                 MatchPattern);

    return !myMatch.get_Success();

}

İkinci örnekte ise gönderilen metindeki özel karakterleri tire(-) ile değiştiriyoruz. Regex ile köşeli parantez “[ ]” ve ters sılaş “\” karakterlerini değiştiremedim. Bu yüzden ax’ın strReplace() metodunu kullanarak değiştirmek zorunda kaldım.

static EcoResProductNumber clearProductNumber(EcoResProductNumber _EcoResProductNumber)
{
    Str                 Pattern =  "[ :;,/+*'@_#!|$½%&(){}^~<> ]";
    EcoResProductNumber ecoResProductNumber;
    ;
ecoResProductNumber =System.Text.RegularExpressions.Regex::Replace(_EcoResProductNumber,
                                                        Pattern, "-");
    ecoResProductNumber = strReplace(ecoResProductNumber ,'[',"-");
    ecoResProductNumber = strReplace(ecoResProductNumber ,']',"-");
    ecoResProductNumber = strReplace(ecoResProductNumber ,'\\',"-");

    return  ecoResProductNumber;
}

Bu metodları Global sınıfına ekledim. Kullanımı çok basit.

static void SEC_FD_RegEx(Args _args)
{
    ;

    if(Global::isProductNumberValid("SEC.s-f.sdf."))
    {
        info("Kod doğru.");
    }

    info(Global::clearProductNumber("SEC D:;,/+*'@_#!|%&(){}^~[] "));
}

Selamlar.