'How put connection in report runtime

I would like send connection for report in DevExpress, and send query for this report I call report with code bellow:

private void Form14_Load(object sender, EventArgs e)
    {
        try {
                            
            XtraReport report           = XtraReport.FromFile(@"C:\\a\\Report2.repx", true);
            ReportPrintTool printTool   = new ReportPrintTool(report);
            printTool.ShowPreviewDialog();

        }
        catch (Exception ex) {

            MessageBox.Show(ex.ToString());

        }
    }


Solution 1:[1]

In the general case, your report is connected to data via the SqlDataSource component. So, I suggest you update the connection at the SqlDataSource instance level. For that purpose, just get the existing data source from your XtraReport class:

var sqlDataSource = xtraReport.DataSource as SqlDataSource;  
sqlDataSource.ConnectionParameters = ...; 

Please refer to the Specify data connection article to learn how to change the data source's connection parameters.

Solution 2:[2]

You can create your own report implementation where you can update the connection string by checking the connection strings used in the reports and the sub reports.

In below example, a Typed Dataset is used to create the reports and then you can update the connection string of the table adapters on the initialization.

Refere this below implementation: // Base Report

    public partial class BaseReport: DevExpress.XtraReports.UI.XtraReport, IDisposable
    {

        public List<SQLiteConnection> GetConnectionList
        {
            get { return connectionList; }
        }

        public List<SimergyBaseReport> GetSubReportList
        {
            get { return subReportList; }

        }
        protected List<SQLiteConnection> connectionList = new List<SQLiteConnection>();
         protected List<SimergyBaseReport> subReportList = new List<SimergyBaseReport>();
         
        public void UpdateConnectionString(String connectionString)
        {
#if !RPT_DESIGN
            connectionString = GlobalUtilities.GetOutputConnectionString(connectionString);
            foreach (SQLiteConnection conn in connectionList)
            {
                conn.Close();
                conn.ConnectionString = connectionString;
                reportDataSet.Clear();
            }
            

            foreach (BaseReport subReport in comparisonSubReportList)
            {
                if (subReport != null)
                    subReport.UpdateConnectionString(connectionString);
            }            
#endif
        }
    }

// Report

public partial class UsageSummary : Simergy.Reporting.Reports.BaseReport
    {
        public ClimaticSummary()
        {
            InitializeComponent();
        }

        public ClimaticSummary(String connectionString, Model model)
            : base(model)
        {
            InitializeComponent();

            connectionList.Add(applicationUsageTableAdapter.Connection);
            connectionList.Add(dailyUsage_SUMMARYTableAdapter.Connection);
            subReportList.Add(xrSubreport1.ReportSource as BaseReport);
            subReportList.Add(xrSubreport2.ReportSource as BaseReport);
            subReportList.Add(footerSubReport.ReportSource as BaseReport);   
         
            reportDataSet = report_DataSet1;

            UpdateConnectionString(connectionString);            
        }
    }

// Custom print control to render the reports

public partial class ReportViewControl : PrintControl
{
    private SimergyBaseReport CurrentReport = null;
        public ReportViewControl()
        {
            InitializeComponent();
        }
        
        public void SetReport(SimergyBaseReport report)
        {
            CurrentReport = report;
            if (CurrentReport != null)
            {
                this.PrintingSystem = report.PrintingSystem;
                SetupButtonVisability();
                report.CreateDocument();
                report.RecreateDocumentMap();                
                this.PrintingSystem = report.PrintingSystem;               
            }
        }

        public void RefreshReport()
        {            
            this.PrintingSystem = null;
            this.PrintingSystem = CurrentReport.PrintingSystem;
            CurrentReport.CreateDocument(true);            
        }
    }

///Usage

BaseReport report = new UsageSummary(someConnectionString);
ReportViewControl viewer = new ReportViewControl();
viewer.SetReport(report);
form1.Controls.Add(viewer);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 DmitryG
Solution 2 Niranjan Singh