Izenda Logo

Question

How can I change the data source I'm using for my reports on the fly?

Answer

You can change the data source for individual reports by overriding the PreExecuteReportSet method. Here is the source code for changing data sources:

public override void PreExecuteReportSet(Izenda.AdHoc.ReportSet reportSet) 
{ 
    base.PreExecuteReportSet(reportSet);
    string orig = reportSet.Source;
    string target = "[dbo].[Orders2]"; 
    
    if(!orig.Contains("Orders")) {
        return; //check for strings like "Orders". If that's not found, we return.
    }
    foreach (JoinedTable jt in reportSet.JoinedTables) 
    { 
        jt.TableName = jt.TableName.Replace(orig, target); 
    } 
    foreach (Report r in reportSet.Reports.AllValues) 
    { 
        foreach (Field f in r.Fields) 
        { 
            f.ColumnName = f.ColumnName.Replace(orig, target); 
        } 
    } 

    foreach (Filter f in reportSet.Filters) 
    { 
        f.Column = f.Column.Replace(orig, target); 
    } 
}