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