RSS

Etiket arşivi: dirpartyTable

Genel Adres defterinde mükerrer kayıtları listelemek

Genel adres defteri ile ilgili yeni bir yazı ile karşınızdayım. Bir önceki yazıda genel adres defteride mükerrer olan kayıtları gösteren bir kod örneği vermiştim. Fakat tekrar eden herbir kaydın hangi kayıtlar ilişkili olduğunu o kodda yakalayamıyorduk. Sadece ABC ltd. şirketi kaydı tekerrür etmişse bana (Adres defter kodu- adı[ABC ltd.]) formatında bir bilgi dönüyordu. Eğer bu bilgiye ek olarak ABC ltd. değerine sahip olan adres defteri kayıtları hangisidir sorunun cevabını arıyorsanız aşağıdaki kodu kullanabilirsiniz. Böylece mükerrer olan tüm kayıtları bir çırpıda elde edip daha sonra istediğim işlemi (silme, güncelleme, birleştirme) kolayca yapabilirim…

// Changed on 01 Ara 2010 at 12:11:36 by mesut
static void findDuplicateDirPartyRecordsByName(Args _args)
{
    DirpartyTable   party;

    name            firstName,lastName;
    dirPartyId      firstPartyId, lastPartyId;
    int             i= 1;
    container       c;
    ;

    while select party
                order by name
    {
        firstName    = party.Name;
        firstPartyId = party.PartyId;

        if(!lastName)
            {
              lastName    = party.Name;
              lastPartyId = party.PartyId;
            }
        else
        if(firstName == lastName)
        {
            //To prevent adding first record every cycle
            // If second record, goes else....
            if(i == 1)
                {
                    c   = conins(c,i,firstPartyId);
                    c   = conins(c,i+1,firstName);
                    c   = conins(c,i+2,lastPartyId);
                    c   = conins(c,i+3,lastName);
                    i   = 5;
                }
            else
                {
                    c   = conins(c,i,firstPartyId);
                    c   = conins(c,i+1,firstName);
                    i   = i + 2;
                }

            lastName      = party.Name;
            lastPartyId   = party.PartyId;

        }
        //Records changed.Add to info anymore
        else
        {
            //Add a blank record in container
            c = conins(c,conlen(c)+1,"");

            i = conlen(c);

            //Only add duplicate records to info
            if(conlen(c) > 1)
              {
                 info(any2str(conpeek(c,1 < i ? 1 : i))   + " " + any2str(conpeek(c,3 < i ? 3 : i))  + " " + any2str(conpeek(c,5 < i ? 5 : i ))  +
                " " + any2str(conpeek(c,7 < i ? 7 : i ))  + " " + any2str(conpeek(c,9 < i ? 9 : i))  + " " + any2str(conpeek(c,11 < i ? 11 : i)) +
                " " + any2str(conpeek(c,13 < i ? 13 : i)) + " " + any2str(conpeek(c,15 < i ? 15 :i)) + " " + any2str(conpeek(c,2)) );
              }
              //clear container
              c = condel(c,1,conlen(c));

            lastName    = party.Name;
            lastPartyId = party.PartyId;
            i = 1;
        }

    }

}

Bu durum nasıl oluyor peki?
1- Genel adres defteri bir çok tablo ile ortak kullanımda olduğu için kullanıcıların farkında olmadan aynı isimle kayıt girmeleri ya da mevcut kaydı kabul etmeyip aynı isimde tekrar kayıt açmaları sonucu oluşabilmektedir.
2- Özellikle ilk veri aktarımı sırasından farklı şirketlere aynı Müşteri, satıcı, iş ilişkisi kodları atılırken her şirkette farklı adres defter koduna sahip oluyorlar. Bu şirketlerde Sanal şirket bünyesinde ise kaydın her güncellenmesinde sistem güncelleme hatası vermektedir.

NOT: Yazıda belirtilen kodun, değiştirilmeden veya değiştirilerek, development/test/canlı ortamlarında kullanılması sonucu oluşabilecek olumlu/olumsuz durumlarda tüm sorumluluk kodu kullanan kişiye aittir.

Mesut BOZTAŞ
Dynamics AX ERP Danışmanı ve
İstanbul Ticaret Üni. Y.Lisans öğrencisi

İstanbul

http://www.etg-it.com

Reklamlar
 
 

Etiketler: , , , , , ,

 
%d blogcu bunu beğendi: