Pages

Monday, 22 September 2014

Freezing Multiple Records In Dynamics Ax 2009

In Some time we want to freeze or read only for current active records.Here am showing hoe to freeze multiple records at one shot.

Example:

Write Following Code In form Design Button Click
---------------------------------------------
void clicked()
{
   ProductInform productInform1,productInform2;
    Container con,conrec;
    int i ;

    ;
    productInform2 = ProductInform_DS.getFirst();
    productInform1 = ProductInform_DS.getFirst();
    i = 1;

    for(productInform1 = ProductInform_DS.getFirst(true) ? ProductInform_DS.getFirst(true) : ProductInform_DS.cursor() ;
        productInform1; productInform1 = ProductInform_DS.getNext() )
        {
            con = conIns(con,i,productInform1.Status);
            conrec = conIns(conrec,i,productInform1.RecId);


            if(conPeek(con,i) != 0)
            {
                throw error("You are not selected Open Order");
            }
            i++;
        }
    ttsbegin;
    if(i == 2)
    {

        select forupdate productInform1 where productInform1.RecId == productInform2.RecId;

        if(productInform1)
        {
            productInform1.Status = statusIdea::Posted;
            productInform1.Permissions = permissions::No;
            productInform1.update();
        }
        ProductInform_DS.reread();
        ProductInform_DS.refresh();
        ProductInform_DS.active();

    }
    else
    {
        for(productInform2 = ProductInform_Ds.getFirst(1) ? ProductInform_DS.getFirst(1) : productInform2 ;productInform2; productInform2 = ProductInform_DS.getNext())
        {
            select forupdate productInform1 where productInform1.RecId == productInform2.recId;

            if(productInform)
            {
                productInform1.Status = StatusIdea::Posted;
                productInform1.Permissions = permissions::No;
                productInform1.update();
            }
        }

    ProductInform_DS.research(true);
    }
    ttscommit;

    super();
}

----------------------------------------------------------------
Write Following Code In Form DataSource Active Method
------------------------------------------------------------

public int active()
{
    int ret;
    ;
    ret = super();

    if(ProductInform.Permissions == permissions::No)
    {

        ProductInform_DS.allowEdit(false);
        Button.enabled(false);

    }
    else
    {
        ProductInform_DS.allowEdit(true);
        Button.enabled(true);
    }


    return ret;
}

No comments:

Post a Comment