public object DataParameterValue(IDataParameterTemplate template)
 {
     if (values.ContainsKey(template.Name))
     {
         return(ConversionHelper.Convert(values[template.Name], ConversionHelper.ToType(template.DbType), DBNull.Value));
     }
     return(DBNull.Value);
 }
        private static string GetParameterValue(IDataParameterTemplate parameter, IEnumerable <MsReportParameter> reportParameters)
        {
            foreach (MsReportParameter reportParameter in reportParameters)
            {
                if (reportParameter.Name.Equals(parameter.Name))
                {
                    foreach (string value in reportParameter.Values)
                    {
                        return(value);
                    }
                }
            }

            return(null);
        }
示例#3
0
        public IDataParameter CreateParameter(IDataParameterTemplate parameterTemplate)
        {
            IDataParameter parameter = Command().CreateParameter();

            parameter.DbType = parameterTemplate.DbType;

            DbParameter db = parameter as DbParameter;

            if (db != null)
            {
                db.IsNullable = parameterTemplate.IsNullable;
            }

            parameter.ParameterName = parameterTemplate.Name;

            return(parameter);
        }
        public static void PopulateReportDataSources(Report report, Rdl rdl)
        {
            IList <IReportDataCommandTemplate> datasources = new List <IReportDataCommandTemplate>();

            for (int i = 0; i < rdl.Items.Length; i++)
            {
                if (rdl.ItemsElementName[i].Equals(RdlChildElement.DataSets))
                {
                    DataSets dataSets = (DataSets)rdl.Items[i];

                    foreach (DataSet dataSet in dataSets.DataSet)
                    {
                        ReportDataCommandTemplate reportDataCommandTemplate = new ReportDataCommandTemplate(dataSet.Name);
                        ReportDataMap             reportDataMap             = new ReportDataMap();
                        foreach (object dataSetItem in dataSet.Items)
                        {
                            DataSetQuery queryType       = dataSetItem as DataSetQuery;
                            RdlFields    fieldCollection = dataSetItem as RdlFields;

                            if (queryType != null)
                            {
                                for (int j = 0; j < queryType.Items.Length; j++)
                                {
                                    switch (queryType.ItemsElementName[j])
                                    {
                                    case DataSetQueryChildElement.CommandType:
                                        reportDataCommandTemplate.CommandType = (CommandType)Enum.Parse(typeof(CommandType), queryType.Items[j].ToString());
                                        break;

                                    case DataSetQueryChildElement.CommandText:
                                        reportDataCommandTemplate.CommandText = queryType.Items[j].ToString();
                                        break;

                                    case DataSetQueryChildElement.QueryParameters:
                                        DataSetQueryParameters queryParameters = (DataSetQueryParameters)queryType.Items[j];
                                        foreach (DataSetQueryParameter queryParameter in queryParameters.QueryParameter)
                                        {
                                            string xname = queryParameter.Name;
                                            if (xname.StartsWith("@", StringComparison.OrdinalIgnoreCase))
                                            {
                                                xname = queryParameter.Name.Substring(1);
                                            }
                                            IDataParameterTemplate parameter = report.ReportParameter(xname);
                                            if (parameter == null)
                                            {
                                                throw new ReportParameterException(
                                                          "Report does not define parameter: " + xname);
                                            }
                                            reportDataCommandTemplate.Parameters.Add(parameter);
                                        }
                                        break;

                                    case DataSetQueryChildElement.DataSourceName:
                                        reportDataCommandTemplate.DataSourceName = queryType.Items[j].ToString();
                                        break;
                                    }
                                }
                            }
                            else if (fieldCollection != null)
                            {
                                RdlField[] fields = fieldCollection.Field;
                                for (int c = 0; c < fields.Length; c++)
                                {
                                    DataMapEntry newEntry = new DataMapEntry();
                                    newEntry.FieldName = fields[c].Name;
                                    for (int d = 0; d < fields[c].ItemsElementName.Length; d++)
                                    {
                                        switch (fields[c].ItemsElementName[d])
                                        {
                                        case RdlFieldType.Item:
                                            if (fields[c].Items[d] is System.Xml.XmlElement)
                                            {
                                                newEntry.TypeName = ((System.Xml.XmlElement)fields[c].Items[d]).InnerText;
                                            }
                                            break;

                                        case RdlFieldType.DataField:
                                            newEntry.ColumnName = fields[c].Items[d].ToString();
                                            break;
                                        }
                                    }
                                    reportDataMap.AddDataMapEntry(newEntry);
                                }
                            }
                        }
                        reportDataCommandTemplate.DataMap = reportDataMap;
                        datasources.Add(reportDataCommandTemplate);
                    }
                }
            }

            report.ReportDataCommandTemplates = datasources;
        }