コード例 #1
0
        public static DataTable LoadReportDataTable(string reportId, string dataSetName, IDictionary <string, object> parameterValues, DataTableCallback callback)
        {
            string  reportPath = ConfigurationManager.AppSettings["VB.Reports.App.ReportDefinitionLibrary.Xml.Serialization.ReportMetadata.Path"];
            IReport report     = ReportFactory.NewReportFactory(reportPath).FindReport(reportId);
            ILocalReportProcessingLocation location = (ILocalReportProcessingLocation)report.ReportProcessingLocation;

            DataTable table;

            using (IDataConnection connection = SimpleQuery.ConfigurationManagerConnection(location.DataSourceName))
            {
                if (connection.State == ConnectionState.Closed)
                {
                    connection.Open();
                }

                IReportDataCommandTemplate reportDataCommandTemplate = report.DataSource(dataSetName);

                using (IDataCommand command = connection.CreateCommand(reportDataCommandTemplate, new DictionaryDataParameterValue(parameterValues).DataParameterValue))
                {
                    command.CommandTimeout = 90;

                    using (IDataReader reader = command.ExecuteReader())
                    {
                        table = DataTableMapper.ToDataTable(reader, reportDataCommandTemplate.DataMap, callback);
                    }
                }
            }
            return(table);
        }