Posts Tagged ‘ Ax 2009

Query & Dialog Örnekleri 1

Merhaba

Örenk 1:

static void query1(Args _args)
{
    CustTable   cust;

    Query       q = new Query();
    QueryRun    qr;

    ;
    warning(“select ile”);
    while select cust
    {
        info(strFmt(“%1″, cust.Name));
    }

Read more

Formda CTRL veya Shift ile seçilmiş kayıtlarda işlem yapmak

Merhaba.

Axaptada grid üzerinde CTRL veya shift ile çoklu seçim yapılabilir.

Bu özelliği kullandığım bir örneği sizinle paylaşıyorum.

Öreneğimizde seçilen kayıtları bir buton aracılığıyla artan numara atanacak.

Öncelikle eklediğimiz butonun propertisinden MultiSelecet  = Yes yapıyoruz.

daha  sonra  click() metodundan   preNumbering() metodnu çağırıyoruz.

Element.preNumbering();

preNumbering() metodumuz inceleyelim ;

void preNumbering()
{
    CustInvoiceJour localCustInvoiceJour;

    boolean         isPreExist;
;
    isPreExist = false;
    localCustInvoiceJour = CustInvoiceJour_ds.getFirst(1); // çoklu seçim varsa içinde dolanıp  PreInvoiceId dolu olan varsa  uyarı verdiriyoruz

   <!--more-->

 if(localCustInvoiceJour)
    {
        while (localCustInvoiceJour)
        {
            if(localCustInvoiceJour.PreInvoiceId)
            {
                isPreExist = true;
            }
            localCustInvoiceJour = CustInvoiceJour_ds.getNext();
        }
    }
    else // eğer çoklu seçim yapılmamış tek satır seçilmişse burası çalışıyor
    {
         if(CustInvoiceJour.PreInvoiceId)
            {
                isPreExist = true;
            }
  �
    }
    if(isPreExist) // eğer PreInvoiceIddolu olan bir kayıt varsa  uyarı veriyoruz
    {
       if(box::yesNo("Seçilen kayıtlarda matbu numara var, değiştirmek istiyor musunuz?",  dialogbutton::Yes) == dialogbutton::Yes)
       {

           // dolu olmasına rağmen değiştirmek isterse
            element.dialogPreNumbering();
       }
    }
    else // PreInvoiceId  eğer dolu değilse diyaloğumuzu çağırıyoruz
    {
        element.dialogPreNumbering();
    }
}

şidide  dialogPreNumbering() metodumuza bakalım

void dialogPreNumbering()
{
    dialog                  d = new Dialog("Numara başlangıcı");
    dialogField             dfPrefix;
    dialogField             dfSufix;

    DTSeries                Prefix;
    DTStartingNum           Sufix;
    CustInvoiceJour         localCustInvoiceJour;
    CustInvoiceJour         upCustInvoiceJour;
;
    d.addGroup().columns(2);
    dfPrefix = d.addField(typeId(DTSeries),"Seri");
    dfSufix  = d.addField(typeId(DTStartingNum), "Başlangıç");

    if(d.run())
    {
        Prefix      = dfPrefix.value();
        Sufix       = dfSufix.value();

        localCustInvoiceJour = CustInvoiceJour_ds.getFirst(1);

        if(localCustInvoiceJour) // yine seçilen kayıtlarda dolanıp gerekli updateişlemini yapıyoruz.
        {
            while (localCustInvoiceJour)
            {
                ttsbegin;
                upCustInvoiceJour = CustInvoiceJour::findRecId(localCustInvoiceJour.RecId,true);
                upCustInvoiceJour.PreInvoiceId = strfmt("%1%2",Prefix,Sufix);
                upCustInvoiceJour.update();
                ttscommit;

                Sufix += 1;

                localCustInvoiceJour = CustInvoiceJour_ds.getNext();
            }
        }
        else
        {
                ttsbegin;
                upCustInvoiceJour = CustInvoiceJour::findRecId(CustInvoiceJour.RecId,true);
                upCustInvoiceJour.PreInvoiceId = strfmt("%1%2",Prefix,Sufix);
                upCustInvoiceJour.update();
                ttscommit;
      �
        }
    }
  �
    CustInvoiceJour_ds.executeQuery(); // formu tazeledik update işlemleri artık görünür halde

}

Selamlar.

Axaptada forma seçime göre range eklemek.

Merhaba

Örneğin bir formunuz var  belli kriterlere göre süzülmesi isteniyor öncelikle gerekli değişkenimizi forma ekliyoruz.

eğer enum tipindeyse ComboBox EDT ise listBox yapabilirsiniz.

sonra eklediğiniz objenin modified metodundan şu metodu çağırın.

void addRange()
{

// önce eski rangeleri temizliyoruz
AXIntegrationTable_ds.query().dataSourceName(“AXIntegrationTable”).clearRange(fieldnum(AXIntegrationTable, RecordType));

Read more

Cross Company ile query yazmak

Merhaba

Bu yazımda birden çok şirketin verilerini gösteren bir formda seçilen kayıtların hangi şirketlerde olduğunu bulan bir metod öreneği var.

void groupByCompany()
{
    TmpFrmVirtual   tmpTmpFrmVirtual;
    PurchReqLine    tmpPurchReqLine;

    str 10          dizi[];
    int             i,j;
    Query           query;
    QueryRun        qRun;

    ;

Read more

Raporda Resource image kullanmak

Merhaba

Yaptığım bir raporda durumlara göre farklı iconlar göstermem istendi.

Personele verilen zimmetlerin takibi için hazırladığım raporda şöyle bir istek vardı.

Eğer pozisyona verilmesi gereken zimmet personele verilmişse yeşil ikon,

Eğer pozisyona verilmesi gereken zimmet personele verilmemişse kırmızı ikon,

Eğer pozisyona verilmesi gerekmeyen bir zimmet personele verilmişse sarı ikon,

Bunun için benin bulduğum çözümse öncelikle bir metodla resource lardan gerekli ikonu almak .

public  FilePath showResource(str _tip)
{
    #AOT
    ResourceNode resourceNode;
    FilePath filePathLogo;
    ;

Read more

Axaptada kodla menuitem çağırmak

Merhaba

x++ ile bazen bazı objeleri çağırmak gerekiyor.

Bunun için önce  MenuFunction   tanımlamalısınız.

MenuFunction    ReqTransOverviewMenu;

Read more

Axapta’da bitmap okuyup display etmek

Merhaba

Bir klasördeki resimleri aşağıdaki şekilde dislay edebilirsiniz.

 display Bitmap dispPersonelSgn()  // donuş tipi Bitmap resimlerimiz bmp uzantili
{
    str             fileName;
    Bitmap bitmap;
    Bindata binData = new BinData();

   Read more

Axaptada Bir Alana Girilen Karakterlerin Kontrolu

Merhaba

Bir string alanınız var. Bu alana bazı karakterlerin girilmesini istemiyorsunuz strFind() metodunu kullanabilirsiniz.

Öreneğin ben bir alana rakam girilmesini istemiyorum.

İlgili alanın tablosunda alanın validatefield() metoduna şu kontrolu yazarsak istediğimizi elde etmiş oluruz.

Read more

InitFromCaller Metod Örneği

Merhaba

Rapora yazdığımız bu metod sayesinde gridden menuitem ile  çağırdığımız raporumuza o satırdaki id ye göre range eklemiş oluruz .

public void initFromCaller(Args _args)
{
    InventQualityOrderTable    _quality;
    QueryBuildDataSource  qbds;
    ;
    if (_args.caller())
    {
        if (! _args.record().RecId)
            throw error(strfmt(“@SYS22338″,funcname()));

Read more

İki Query ile fatch örneği

Bir fatch örneği paylaşıyorum.

FDInventTransDim tablosu datasourcta group by yapılmış şekilde mevcut

Fatch metodumuza bakalım 

public boolean fetch()
{
    boolean                                        ret;
    Query                                            q;
    QueryRun                                    qRun;
    FDInventTransDim                 fDInventTransDim;
    FDInventTransDim                 tmpFDInventTransDim;
    QueryBuildDataSource          qBd,qbdsTmp;
    QueryBuildRange                     qBr,qbrTmp;
    Query                                            qTmp;
    QueryRun                                    qRunTmp;

    ; Read more

Page 3 of 812345...Last »