public static void VerifyReportParameters(Report report, Rdl rdl) { for (int i = 0; i < rdl.Items.Length; i++) { if (rdl.ItemsElementName[i].Equals(RdlChildElement.ReportParameters)) { RdlReportParameters reportParameters = (RdlReportParameters)rdl.Items[i]; foreach (RdlReportParameter reportParameter in reportParameters.ReportParameter) { IReportParameter target = report.ReportParameter(reportParameter.Name); if (target == null) { throw new ReportParameterException("XML metadata is missing parameter: " + reportParameter.Name); } for (int j = 0; j < reportParameter.Items.Length; j++) { switch (reportParameter.ItemsElementName[j]) { case RdlReportParameterChildElement.DataType: ReportParameterDataType rpdt = (ReportParameterDataType)Enum.Parse(typeof(ReportParameterDataType), reportParameter.Items[j].ToString()); DbType dbType = XmlReportFactory.ToDbType(rpdt); if (!target.DbType.Equals(dbType)) { throw new ReportParameterException("XML metadata mismatch (DataType)! Parameter: " + target.Name); } break; } } } } } }
internal static DbType ToDbType(ReportParameterDataType type) { DbType result = DbType.Int32; switch (type) { case ReportParameterDataType.Boolean: result = DbType.Boolean; break; case ReportParameterDataType.DateTime: result = DbType.DateTime; break; case ReportParameterDataType.Float: result = DbType.Decimal; break; case ReportParameterDataType.Integer: result = DbType.Int32; break; case ReportParameterDataType.String: result = DbType.String; break; } return(result); }