Tuesday, March 8, 2016

SSRS Reports (Multi-Select)


Step 1. Create a Temp Table
Step 2. Create a DC class
Step 3. Create a DP class
Step 4. Create a UI Builder class
Step 4. start à visual studioàfileànew->projectàMicrosoft dynamic axàReportModel                                
àproject name
Step 5. Solution exploreàselect the project àRight clickàreportàreport nameà
DatasetàRight clickà
Step 6. Add data setàgive Data set nameàpropertyàselect Report DataProvideràSelect
the DP class
Step 7. Property: Set Dynamic Filter “false”
Step 8. Designàadd designàprecision designàgive the name
Step 9. Select the designàright clickàEdit design
Step 10. After finish the design
Step 11. In solution Explore àselect the projectàrightclickàAdd to Aot
Step 12. In AOTàssrsReportàreport->select the project àright clickàDeployee the report
//Without Controller class
Step 13. MenuitemàOutputàCreate a new menuItemàSelect the menu Itemàproperty:
Objecttype:SsrsReport
Object:select the ReportName
Report Design:Select the Design
//With controller class
Step 13. MenuitemàOutputàCreate a new menuItemàSelect the menu Itemàproperty:
Objecttype:class
Object:select the Controller class
LinkedPermisionType : SSRSReport
LinkedPermisionObject:ReportName
Linked PermisionObject Child:Design Name
DC Class://parametres

Class Declaration:
[
    DataContractAttribute,
    SysOperationGroupAttribute("PurchSamples","Purch Samples Report","1"),
    SysOperationContractProcessingAttribute(classstr(PurchSamplesUIBuilder),SysOperationDataContractProcessingMode::CreateUIBuilderForRootContractOnly)
]
public class PurchSamplesContract
{
    TransDate           DeliveryDate;
    List                purchId;
    PurchStatus         status;
    List                itemId;
}


First Parameter Method:
[
    DataMemberAttribute('DeliveryDate'),
    SysOperationLabelAttribute(literalstr("Delivery Date")),
    SysOperationHelpTextAttribute(literalstr("Enter Date")),
    SysOperationDisplayOrderAttribute('1')

]
//by Subash
        Edt                          edt                      fieldname
public TransDate parmDeleiveryDate(TransDate _fromdate = DeliveryDate)
{
    DeliveryDate = _fromdate;                                       
    return DeliveryDate;
}


Second Parameter Method:
[
    DataMemberAttribute('ItemId'),
    SysOperationLabelAttribute(literalstr("Item Id")),
    SysOperationHelpTextAttribute(literalstr("Select Item Id")),
    SysOperationDisplayOrderAttribute('2'),
    AifCollectionTypeAttribute('Item Id',Types::String,extendedtypestr(ItemIdSmall))
]
public List parmItemId(List _itemId = itemId)
{
    itemId = _itemId;
    return itemId;
}


Third Parameter Method:
[
    DataMemberAttribute('PurchId'),
    SysOperationLabelAttribute(literalstr("Purch Id")),
    SysOperationHelpTextAttribute(literalstr("Select Purch Id")),
    SysOperationDisplayOrderAttribute('3'),
    AifCollectionTypeAttribute('Purch Id',Types::String,extendedtypestr(PurchIdBase))
]
public List parmPurchId(List _purchId = purchId)
{
    purchId = _purchId;
    return purchId;
}
Fourth Parameter Method:
[
    DataMemberAttribute('PurchStaus'),
    SysOperationLabelAttribute(literalstr("Purch Staus")),
    SysOperationHelpTextAttribute(literalstr("Select Purch Status")),
    SysOperationDisplayOrderAttribute('5')
]
public PurchStatus parmPurchStatus(PurchStatus _purchStatus = status)
{
    status = _purchStatus;
    return status;
}

 




DP Class://business logic

Class Declaration:
[
    SRSReportQueryAttribute(Querystr(PurchSampleQuery)),
    SRSReportParameterAttribute(classstr(PurchSamplesContract))
]

public class PurchSamplesDP extends SRSReportDataProviderBase
{

    TmpPurch                         tmpTable;
    TransDate                        DeliveryDate;
    List                             purchId;
    VendInvoiceAccount               InvoiceAccount;
    PurchStatus                      status;
    List                             itemId;

}


Method to get data from Temp Table:
[
    SRSReportDataSetAttribute(tablestr("TmpPurch"))
]
public TmpPurch GetData()
{
    select * from tmpTable;
    return tmpTable;
}


Process report Method:
[
SysEntryPointAttribute(false)
]
public void processReport()
{
    Query                               query;
    QueryRun                            queryRun;
    QueryBuildDataSource                qbds,qbds1;
    QueryBuildRange                     qbr,qbr1,qbr2;
    ListEnumerator                      purchEnum,ItemEnum;
    PurchSamplesContract                rdpContract;
    PurchTable                        purchTab;
    PurchLine                         purchLin;
    rdpContract     =   new PurchSamplesContract();
    rdpContract     =   this.parmDataContract() as PurchSamplesContract;

    query           =   this.parmQuery();

    DeliveryDate    =   rdpContract.parmDeleiveryDate();
    purchId         =   rdpContract.parmPurchId();
    itemId          =   rdpContract.parmItemId();
    status          =   rdpContract.parmPurchStatus();


    if(purchId)
    {
        qbds = query.dataSourceTable(tableNum(PurchTable));

        qbr = qbds.addRange(fieldNum(PurchTable,PurchId));

        purchEnum = PurchId.getEnumerator();
        while(purchEnum.moveNext())
        {
            qbr.value(queryRangeConcat(qbr.value(),purchEnum.current()));
        }
    }

/*
qbds = query.dataSourceTable(tableNum(HcmWorker));
qbds1 = qbds.dataSourceTable(tableNum(HCMIdentificationType));
qbds1.relations(true);

qbr = qbds1.addRange(fieldNum(HCMIdentificationType,IdentificationType));
qbr.value(queryvalue(“SSN”));*/

    if(itemId)
    {
        qbds1 = query.dataSourceTable(tableNum(PurchLine));

        qbr1 = qbds1.addRange(fieldNum(PurchLine, ItemId));

        ItemEnum = itemId.getEnumerator();
        while(ItemEnum.moveNext())
        {
            qbr1.value(queryRangeConcat(qbr1.value(),ItemEnum.current()));
        }
    }

     if(status)
    {
        query.dataSourceTable(tableNum(PurchTable)).addRange(fieldNum(PurchTable,PurchStatus)).value(queryValue(status));

    }

    if(DeliveryDate)
     {
         query.dataSourceTable(tableNum(PurchTable)).addRange(fieldNum(PurchTable,DeliveryDate)).value(queryRange(mkDate(01,01,2000),DeliveryDate));
     }

     queryRun        =   new QueryRun(query);

    while(queryRun.next())
    {
    purchLin    =      queryRun.get(tableNum(PurchLine));
    purchTab    =      queryRun.get(tableNum(PurchTable));

    tmpTable.PurchId        =   purchTab.PurchId;
    tmpTable.PurchName      =   purchTab.PurchName;
    tmpTable.OrderAccount   =   purchTab.InvoiceAccount;
    tmpTable.CurrencyCode   =   purchTab.CurrencyCode;
    tmpTable.DeliveryDate   =   purchTab.DeliveryDate;
    tmpTable.PurchStatus    =   purchTab.PurchStatus;
    tmpTable.ItemId         =   purchLin.ItemId;
    tmpTable.Name           =   purchLin.Name;
    tmpTable.PurchQty       =   purchLin.PurchQty;
    tmpTable.BarCode        =   purchLin.BarCode;//fields which we want to show in the report.

    tmpTable.insert();
    }
}


Main method:
Public static void main(Args args)
{
    PurchSamplesDP  obj = new PurchSamplesDP();
    obj.processReport();
}

 



UI Builder Class://for lookup

Class Declaration:
public class PurchSamplesUIBuilder extends SrsReportDataContractUIBuilder
{
    PurchSamplesContract    rdpcontract;
    DialogField             dialogItemId;
    DialogField             dialogDeliveryDate;
    DialogField             dialogPurchId;
    DialogField             dialogInvoiceId;
    DialogField             dialogPurchStatus;
}


Build Method:
public void build()
{
    rdpcontract = this.dataContractObject() as PurchSamplesContract;

    dialogDeliveryDate  = this.addDialogField(methodStr(PurchSamplesContract,parmDeleiveryDate),rdpContract);
    dialogPurchId       = this.addDialogField(methodStr(PurchSamplesContract,parmPurchId),rdpcontract);
    dialogItemId        = this.addDialogField(methodStr(PurchSamplesContract,parmItemId),rdpContract);
    dialogPurchStatus   = this.addDialogField(methodStr(PurchSamplesContract,parmPurchStatus),rdpcontract);
}


Look up creation Method for first Parameter:
public void ItemIdLookup(FormStringControl _control)
{
    Query query;
    container cnt;
    ;
    query = new Query();
    query.addDataSource(tableNum(InventTable));
    query.dataSourceTable(tableNum(InventTable)).fields().addField(fieldNum(InventTable, ItemId));
    query.dataSourceTable(tableNum(InventTable)).addgroupbyField(fieldNum(InventTable, ItemId));

    query.dataSourceTable(tableNum(InventTable)).fields().addField(fieldNum(InventTable, NameAlias));
    query.dataSourceTable(tableNum(InventTable)).addgroupbyField(fieldNum(InventTable, NameAlias));

    SysLookupMultiSelectGrid::lookup(query, _control, _control, cnt);
}


Look up creation Method for Second Parameter:
public void PurchIdIdLookup(FormStringControl _control)
{
    Query query;
    container cnt;
    ;
    query = new Query();
    query.addDataSource(tableNum(PurchTable));
    query.dataSourceTable(tableNum(PurchTable)).fields().addField(fieldNum(PurchTable, PurchId));
    query.dataSourceTable(tableNum(InventTable)).addgroupbyField(fieldNum(InventTable, PurchId));
   
    query.dataSourceTable(tableNum(PurchTable)).fields().addField(fieldNum(PurchTable, PurchName));
    query.dataSourceTable(tableNum(InventTable)).addgroupbyField(fieldNum(InventTable, PurchName));
   
    SysLookupMultiSelectGrid::lookup(query, _control, _control, cnt);
}


Post build Method:
public void postBuild()
{
    Dialog localDaialogObj = this.dialog();

    super();

    dialogItemId = this.bindInfo().getDialogField(this.dataContractObject(),methodStr(PurchSamplesContract,parmItemId));
    dialogItemId.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(PurchSamplesUIBuilder,ItemIdLookup), this);

    dialogPurchId = this.bindInfo().getDialogField(this.dataContractObject(),methodStr(PurchSamplesContract,parmPurchId));
    dialogPurchId.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(PurchSamplesUIBuilder,PurchIdIdLookup), this);

}


Post Run Method:
Public void PostRun()
{
    PurchSamplesContract contract = this.dataContractObject();

}

No comments:

Post a Comment