Wednesday, 14 June 2017

multi select lookup in ssrs report dialog

class ALE_ExpenseReportUIBuilder extends SysOperationAutomaticUIBuilder//SrsReportDataContractUIBuilder
{
    ALE_ExpenseReportContract           contract;
    SysLookupMultiSelectGrid            multiSelect;
}

//
public void build()
{

    contract = this.dataContractObject();

    this.addDialogField(methodStr(ALE_ExpenseReportContract,parmFromDate),contract);
    this.addDialogField(methodStr(ALE_ExpenseReportContract,parmToDate),contract);
    this.addDialogField(methodStr(ALE_ExpenseReportContract,parmWrkCtrId),contract);
    //this.addDialogField(methodStr(ALE_ExpenseReportContract,parmWrkCtrGroupId),contract);
    this.addDialogField(methodStr(ALE_ExpenseReportContract,parmCheck),contract);
    //super();
}

//
private void lookupWrkctrId(FormStringControl    _formStringControl)
{
    Query                   query;
    QueryBuildDataSource    datasource;
    QueryBuildRange         queryBuildRange;
 
    if(_formStringControl != null)
    multiSelect     = SysLookupMultiSelectGrid::construct(_formStringControl,_formStringControl);
    //SysTableLookup          sysTableLookup      = SysTableLookup::newParameters(tableNum(WrkCtrTable), _formStringControl);

    query = new Query();
    datasource = query.addDataSource(tableNum(WrkCtrTable));
    queryBuildRange = datasource.addRange(fieldNum(WrkCtrTable,WrkCtrType));
    //queryBuildRange.value(strFmt("%1, %2", Global::enum2int(WrkCtrType::Machine), Global::enum2int(WrkCtrType::Tool)));
    //sysTableLookup.addLookupfield(fieldNum(WrkCtrTable,WrkCtrId));
    //sysTableLookup.parmQuery(query);
    //sysTableLookup.performFormLookup();
    query.dataSourceTable(tableNum(WrkCtrTable)).addSelectionField(fieldNum(WrkCtrTable, WrkCtrId));
    query.dataSourceTable(tableNum(WrkCtrTable)).addSelectionField(fieldNum(WrkCtrTable, Name));
 
    multiSelect.parmQuery(query);
    multiSelect.run();




//sysTableLookup.parmQuery(query);



}

//
public void postBuild()
{
    DialogField         resource;
    DialogField         resourceGroup;
    super();
    resource = this.bindInfo().getDialogField(this.dataContractObject(),
            methodStr(ALE_ExpenseReportContract,parmWrkCtrId));
    //resourceGroup = this.bindInfo().getDialogField(this.dataContractObject(),
           // methodStr(ALE_ExpenseReportContract,parmWrkCtrGroupId));
    resource.registerOverrideMethod(methodstr(FormStringControl, lookup), methodstr(ALE_ExpenseReportUIBuilder, lookupWrkctrId ), this);
    //resourceGroup.registerOverrideMethod(methodstr(FormStringControl, lookup), methodstr(ALE_ExpenseReportUIBuilder, lookupWrkctrGroupId ), this);
}
//
public void postRun()
{
    //super();
}


contract class// parm method use list

public List parmWrkCtrId(List _resouce = resource)
{
    resource = _resouce;
    return resource;
}

in Dp get the list value as follow

ListIterator                resourceListIt;

resourceListIt = new ListIterator(contract.parmWrkCtrId());

 while (resourceListIt.more())
 {
         resourceListIt.value();
..
..
     resourceListIt.next();    


}

Tuesday, 13 June 2017

tts commit error

static void TheAxaptaResetTTS(Args _args)
{
    while (appl.ttsLevel() > 0)
    {
        info(strfmt("Level %1 aborted",appl.ttsLevel()));
        ttsAbort;
    }
}

Export/import Model store

Export model store command using powershell:

Export-AXModelStore -File "C:\UAT06082016"

Import-AXModelStore -File "C:\UAT31072016" -Idconflict "overwrite"

Wednesday, 7 June 2017

pass enum as a range

qbrFilter.value(strFmt("%1,%2,%3,%4,%5",Global::enum2int(Status::Open),Global::enum2int(Status::Cancelled),Global::enum2int(Status::Sent),Global::enum2int(Status::MaintenaceClosed),Global::enum2int(Status::UnderProgress)));


http://axvuongbao.blogspot.in/2013/08/how-to-create-multi-select-lookup.html

lookup in ssrs reports

lookup can be achieved by using UI Builder class

class PMWorkorderUIBuilder extends SrsReportDataContractUIBuilder
{
        WorkorderContract         contract; // Contract class
}

override the build method  to get the dialog fields on the report dialog

public void build()
{
    contract = this.dataContractObject();
    this.addDialogField(methodStr(WorkorderContract         ,parmEmpType),contract);
    this.addDialogField(methodStr(WorkorderContract         ,parmFromDate),contract);
    this.addDialogField(methodStr(WorkorderContract         ,parmToDate),contract);
    //super();
}

New method to create Lookup for the field

private void lookupEmptype(FormStringControl    _formStringControl)
{
    Query query;
    QueryBuildDataSource datasource;
    SysTableLookup          sysTableLookup      = SysTableLookup::newParameters(tableNum(EmplMaintainance), _formStringControl);

    query = new Query();
    datasource = query.addDataSource(tableNum(EmplMaintainance));
    sysTableLookup.addLookupfield(fieldNum(EmplMaintainance,EmpType));
    //Add the query to the lookup form
    sysTableLookup.parmQuery(query);
    // Perform the lookup
    sysTableLookup.performFormLookup();
}

override the postBuild method to get the looup,
public void postBuild()
{
    DialogField         dialogField;
    super();
    dialogField = this.bindInfo().getDialogField(this.dataContractObject(),
            methodStr(PMWorkorderContract,parmEmpType));
    dialogField.registerOverrideMethod(methodstr(FormStringControl, lookup), methodstr(PMWorkorderUIBuilder,  lookupEmptype), this);
}


And at last link the UI Builder class to contract class with the attribute

[SysOperationContractProcessingAttribute(classStr(PMWorkorderUIBuilder)),
DataContractAttribute]
class ALE_PMWorkorderContract
{
    TransDate           fromDate; //
    TransDate           toDate;
    ALEEmpType          empType;
}

Friday, 2 June 2017

change date format in ssrs reports , hide field based on expression

format(Globals!ExecutionTime,"dd/MM/yy hh:mm:ss tt")

=iif((First(Fields!ReportName.Value, "SW_VoucherHeaderDS") = "Bank Receipt Voucher"),true,false) or iif((First(Fields!ReportName.Value, "SW_VoucherHeaderDS") = "Cash Receipt Voucher"),true,false) or iif((First(Fields!ReportName.Value, "SW_VoucherHeaderDS") = "IDE Expense voucher"),true,false)

iif(Parameters!Expense_Check.Value = "0",true,false)
// check parameter property Data type string or boolean // based on data type change the expression
 "0" or "YES"

Wednesday, 31 May 2017

open form through code

write the below code in class or form(A)

   Args                        args;
    FormRun                     formRun;
    super();

    args = new args();
    args.name(formstr(FormBName));
    args.record(tablename);// pasing record
    formrun = classfactory.formrunclass(args);
    formrun.init();
    formrun.run();
    formrun.wait();

write below code in init method of formB

     super();
    if(element.args().caller() && element.args().caller().name() == formStr(FormA))
    {
        tablebuffer = element.args().record();      
        Table_ds.query().dataSourceNo(1).addRange(fieldnum(table,field)).value(queryValue(table.field));
     
    }