Accessing data in an Office Accounting report
I was asked how you can access the data in an Office Accounting report in code. As the code shows below this is very simple – you just have to remember a few things:
· There is no guarantee that the columns in the data view won’t change between versions
· If you use the groups make sure to iterate through the sub groups as that may be where the data lives
ISmallBusinessInstance instance = (ISmallBusinessInstance)sbaObjects.SmallBusinessInstance;
IReportEngineV2 reportEngine = (IReportEngineV2)sbaObjects.ReportEngine;
// Get a report descriptor
IReportDescriptorV2 reportDescriptor
= reportEngine.ReportDescriptorView.GetByName("CustomerTransactionHistory");
// Use the report descriptor to create a report executor
INativeReportExecutorV2 reportExecutor
= (INativeReportExecutorV2)reportEngine.GetReportExecutor(reportDescriptor);
// Let's change a filter on the report
// just to show that you can modify the report before running the report
IReportFilterDateV2 filterDate =
(IReportFilterDateV2)reportExecutor
.ReportProperties.ReportFilters.GetFilter(ReportFilterEnum.DateFilter);
filterDate.DateFilter = DateFilter.All;
// Access the dataView, this will automatically
// run the report if it hasn't been run
DataView dataView = reportExecutor.ReportDocument.DataView;
// Another way To access the data would be through the groups:
foreach (IReportGroupV3 group in reportExecutor.ReportDocument.ReportGroups)
{
// A dataView with the data in this group
DateView dataInThisGroup = group.GroupDataViewRows;
// In some reports groups may have sub groups
// You can easily iterate these as well
foreach (IReportGroupV3 subGroup in group.SubGroups)
{ }
}