Esempio n. 1
0
        protected bool ProcessSharedDataSetReference()
        {
            DataSetInfo dataSetInfo = null;

            if (m_odpContext.SharedDataSetReferences != null)
            {
                if (Guid.Empty != m_dataSet.DataSetCore.CatalogID)
                {
                    dataSetInfo = m_odpContext.SharedDataSetReferences.GetByID(m_dataSet.DataSetCore.CatalogID);
                }
                if (dataSetInfo == null)
                {
                    dataSetInfo = m_odpContext.SharedDataSetReferences.GetByName(m_dataSet.DataSetCore.Name, m_odpContext.ReportContext);
                }
            }
            if (dataSetInfo == null)
            {
                throw new ReportProcessingException(ErrorCode.rsInvalidSharedDataSetReference, m_dataSet.Name.MarkAsPrivate(), m_dataSet.SharedDataSetQuery.SharedDataSetReference);
            }
            List <Microsoft.ReportingServices.ReportIntermediateFormat.ParameterValue> parameters = m_dataSet.SharedDataSetQuery.Parameters;

            SharedDataSetParameterNameMapper.MakeUnique(parameters);
            ParameterInfoCollection parameterInfoCollection = new ParameterInfoCollection();

            object[] array = new object[parameters?.Count ?? 0];
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = parameters[i].EvaluateQueryParameterValue(m_odpContext, m_dataSet.ExprHost);
                if (m_dataSet.IsReferenceToSharedDataSet)
                {
                    ParameterInfo parameterInfo = new ParameterInfo(parameters[i]);
                    parameterInfo.Name = parameters[i].UniqueName;
                    parameterInfo.SetValuesFromQueryParameter(array[i]);
                    parameterInfo.DataType = DataType.Object;
                    parameterInfoCollection.Add(parameterInfo);
                }
            }
            m_odpContext.CheckAndThrowIfAborted();
            m_executionMetrics.StartTotalTimer();
            try
            {
                GetSharedDataSetChunkAndProcess(processAsIRowConsumer: true, dataSetInfo, parameterInfoCollection);
            }
            finally
            {
                m_executionMetrics.RecordTotalTimerMeasurement();
            }
            if (!m_odpContext.IsSharedDataSetExecutionOnly && m_dataSetInstance != null)
            {
                m_dataSetInstance.SaveCollationSettings(m_dataSet);
                UpdateReportOMDataSet();
            }
            return(false);
        }
 internal void ResolveDependencies(ParameterInfoCollection containingCollection)
 {
     if (m_dependencyIndexList != null)
     {
         m_dependencyList = new ParameterInfoCollection(m_dependencyIndexList.Length);
         for (int i = 0; i < m_dependencyIndexList.Length; i++)
         {
             m_dependencyList.Add(containingCollection[m_dependencyIndexList[i]]);
         }
     }
     m_dependencyIndexList = null;
 }
 internal ParameterInfo(ParameterInfo source)
     : base(source)
 {
     m_isUserSupplied      = source.m_isUserSupplied;
     m_valuesChanged       = source.m_valuesChanged;
     m_dynamicValidValues  = source.m_dynamicValidValues;
     m_dynamicDefaultValue = source.m_dynamicDefaultValue;
     m_state                   = source.State;
     m_othersDependOnMe        = source.m_othersDependOnMe;
     m_useExplicitDefaultValue = source.m_useExplicitDefaultValue;
     m_prompt                  = source.m_prompt;
     m_dynamicPrompt           = source.m_dynamicPrompt;
     if (source.m_values != null)
     {
         int num = source.m_values.Length;
         m_values = new object[num];
         for (int i = 0; i < num; i++)
         {
             m_values[i] = source.m_values[i];
         }
     }
     if (source.m_labels != null)
     {
         int num2 = source.m_labels.Length;
         m_labels = new string[num2];
         for (int j = 0; j < num2; j++)
         {
             m_labels[j] = source.m_labels[j];
         }
     }
     if (source.m_dependencyList != null)
     {
         int count = source.m_dependencyList.Count;
         m_dependencyList = new ParameterInfoCollection(count);
         for (int k = 0; k < count; k++)
         {
             m_dependencyList.Add(source.m_dependencyList[k]);
         }
     }
     if (source.m_validValues != null)
     {
         int count2 = source.m_validValues.Count;
         m_validValues = new ValidValueList(count2);
         for (int l = 0; l < count2; l++)
         {
             m_validValues.Add(source.m_validValues[l]);
         }
     }
 }