Are you looking for a way to combine related data from different sources for your reports that doesn't involve a lot of tedious
In response to customer needs, we've added a new feature to ActiveReports 12: dataset joins.
Dataset joins work in nested data regions in RDL and Page reports.
You can use the following data regions with datset joins, as both parent and nested data regions.
You can also use these two as nested data regions.
There are two ways to create dataset joins. You can use parameters or filters, depending on your needs.
Note: If you're new to ActiveReports, check out our Getting Started guide for more details on how to open a report, add a data source, etc.
Data joins using parameters are great for when
For example, let's say that your parent data set is Regions and your child data set is Stores, and you join the datasets on the RegionID field. In this case you probably don't have a whole lot of regions, and you probably don't have stores that have multiple regions. This keeps the number of requests relatively low.
This is because the data engine executes the child data set for each instance (every row, every column) of the nested region it's bound to and passes the evaluated parameters. The data engine uses DBMS data filtering indexes, which could end up sending a LOT of requests if you reverse the example above and use Stores for the parent data set, and Regions for the child.
Multiple reqests for data can affect performance if you reverse the parent and child data sets so that the parent contains a lot of rows of data.
Note: I'm using the Reels.mdb sample data installed with ActiveReports in the \Documents\GrapeCity Samples\ActiveReports 12\Data folder, plus a small Regions.csv data file that I made.
Data joins using filters are great for when
For example, let's say that your parent data set is Products and comes from an MDB data provider, your child data set is Inventory and comes from a CSV file, and you join the datasets on the ProductID field. In this case you probably don't have a whole lot of regions, and you probably don't have stores that have multiple regions. This keeps the amount of memory used to store the child data set relatively low.
This is because we load the child data set into memory to access its rows. Then we perform an indexed search in that memory for each row in the parent data set.
Storing your child data set uses memory. If it contains a lot of values, it uses a lot of memory to store it and to perform the indexed search.
Note: I'm using the sample data installed with ActiveReports in the \Documents\GrapeCity Samples\ActiveReports 12\Data folder.