String BuildGetMembers() { StringBuilder builder = new StringBuilder(); if (m_CurrentTupleItem != null && m_DevileryModeCombo.Combo.SelectedIndex >= 0) { builder.Append("SELECT TOPCOUNT({"); if (m_DevileryModeCombo.Combo.SelectedIndex == 0) { // Запросить дочерние builder.AppendFormat("{0}.Children - {0}.DataMember", m_CurrentTupleItem.UniqueName); } if (m_DevileryModeCombo.Combo.SelectedIndex == 1) { // Запросить соседние builder.AppendFormat("{0}.Siblings - {0}", m_CurrentTupleItem.UniqueName); } if (m_DevileryModeCombo.Combo.SelectedIndex == 2) { // Запросить выбранные builder.AppendFormat("{0}", m_MembersChoice.SelectedSet); } builder.Append("}, 1000)"); builder.AppendFormat(" on 0 FROM {0} ", OlapHelper.ConvertToQueryStyle(CubeName)); // Условие WHERE String where = String.Empty; IDictionary<String, MemberInfo> tuple = m_Cell.GetTuple(); foreach (MemberInfo member in tuple.Values) { if (member.UniqueName != m_CurrentTupleItem.UniqueName) { if (!String.IsNullOrEmpty(where)) { where = where + ", "; } where = where + member.UniqueName; } } if (!String.IsNullOrEmpty(where)) { builder.AppendFormat("WHERE ({0})", where); } // дочерние select {[Персона].[Персонал].&[0x806600000000024F].Children - [Персона].[Персонал].&[0x806600000000024F].DataMember} on 0 from [Бюджет] where ([Сценарий].[Сценарии].&[План], [Период].[ГКМ].[Год].&[2008], [Measures].[Сумма], [Статья].[Статьи].&[и_Ресурсы_Загрузка], [ЦФО].[Менеджмент].&[У-5], [Контрагент].[Контрагенты].[Все контрагенты], [Проект].[Проекты].[Все проекты], [Договор].[Договоры].[Все договоры], [Подразделение].[Подразделения].[Все подразделения], [Номенклатура].[Вид-Группа-Номенклатура].[Вся номенклатура], [Бизнес-процесс].[Бизнес-процессы].[Все бизнес-процессы], [Вид Деятельности].[Вид-Группа-Деятельность].[Вид].&[Технологические работы]) // соседние select {[Персона].[Персонал].&[0x806600000000019E].Siblings - [Персона].[Персонал].&[0x806600000000019E]} on 0 from [Бюджет] where ([Сценарий].[Сценарии].&[План], [Период].[ГКМ].[Год].&[2008], [Measures].[Сумма], [Статья].[Статьи].&[и_Ресурсы_Загрузка], [ЦФО].[Менеджмент].&[У-5], [Контрагент].[Контрагенты].[Все контрагенты], [Проект].[Проекты].[Все проекты], [Договор].[Договоры].[Все договоры], [Подразделение].[Подразделения].[Все подразделения], [Номенклатура].[Вид-Группа-Номенклатура].[Вся номенклатура], [Бизнес-процесс].[Бизнес-процессы].[Все бизнес-процессы], [Вид Деятельности].[Вид-Группа-Деятельность].[Вид].&[Технологические работы]) } return builder.ToString(); }
public String BuildDrillThrough(CellInfo cell) { String result = String.Empty; if (cell != null) { //var tuple = new Dictionary<String, MemberInfo>(); //if (cell.ColumnMember != null && cell.ColumnMember != MemberInfo.Empty) //{ // cell.ColumnMember.CollectAncestors(tuple); //} //if (cell.RowMember != null && cell.RowMember != MemberInfo.Empty) //{ // cell.RowMember.CollectAncestors(tuple); //} //var statement = GetMoveAxesStatement(RefreshQuery()); var statement = this.CreateWrappedStatement(); var tuple = cell.GetTuple(); if (statement != null && tuple != null && tuple.Count > 0) { statement.Axes.Clear(); List <MdxExpression> members = new List <MdxExpression>(); foreach (var member in tuple.Values) { var expr = new MdxObjectReferenceExpression(member.UniqueName, member.Caption); members.Add(expr); } statement.Axes.Add(new MdxAxis("0", new MdxTupleExpression(members))); using (MdxDomProvider provider = MdxDomProvider.CreateProvider()) { StringBuilder sb = new StringBuilder(); provider.GenerateMdxFromDom(statement, sb, new MdxGeneratorOptions()); result = sb.ToString(); } if (!String.IsNullOrEmpty(result)) { result = String.Format("DRILLTHROUGH {0}", result); } } } return(result); }
void InitializeTuple(CellSetData cs_descr) { if (cs_descr != null) { CellSetDataProvider cellSetProvider = new CellSetDataProvider(cs_descr); CellInfo cell = cellSetProvider.GetCellInfo(0, 0); if (cell != null) { IDictionary <String, MemberWrap> slice = new Dictionary <String, MemberWrap>(); IDictionary <String, MemberInfo> tuple = cell.GetTuple(); foreach (String hierarchyUniqueName in tuple.Keys) { slice.Add(hierarchyUniqueName, new MemberWrap(tuple[hierarchyUniqueName])); } m_CopyControl.Initialize(slice); } } }
public void Initialize(CellInfo cell) { m_Cell = cell; List <TupleItem> list = new List <TupleItem>(); if (m_Cell != null) { IDictionary <String, MemberInfo> tuple = m_Cell.GetTuple(); foreach (MemberInfo member in tuple.Values) { list.Add(new TupleItem(member)); } } m_Grid.ItemsSource = list; if (list.Count > 0) { m_Grid.SelectedIndex = 0; } else { m_Grid.SelectedIndex = -1; } }