Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
Добрый день! Может ли кто нибудь подсказать как получить фильтры из OWC11. Проблема следующая: Есть куб и OWC11, показывающая его. Необходимо по двойному клику на cell получить установленные фильтры для последующего формирования MDX запроса. Двойной клик я обрабатываю и вытаскиваю выбранный срез по строкам и столбцам (MyPT.Selection.Item(0).Cell.ColumnMember.UniqueName) Формирую примерно следующий запрос: SELECTFROM [CubeName] WHERE ([Дата].[All Дата].[2005], [Name].[All Full Name].[user]) Необходимо вытащить фильтры. Заранее благодарю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 12:25 |
|
||
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
в офис тулпаке есть пример по drillthrough. там есть код получения фильтров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 13:01 |
|
||
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
Да, я там копался. Но так и не понял... Единственное, что у меня получилось: Вывести имя измерения: for i=0 To (MyPT.ActiveView.FilterAxis.FieldSets.Count-1) MsgBox MyPT.ActiveView.FilterAxis.FieldSets(i).UniqueName Next А мне надо выбранные member'ы ([Дата].[All Дата].[2005]) Кстати в toolpack'e очень много багов (если выбрать множественный фильтр, то он игнорирует вообще этот фильтр) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 13:34 |
|
||
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
Dmitry Biryukovв офис тулпаке есть пример по drillthrough. там есть код получения фильтров Не далее, как сегодня, начал разбираться с одним "затыком" в работе drillthrough.htc из упомянутого "тулпака": странные дела происходят, самая "главная" функция ( HandleFieldSet ), которая формирует MDX-запрос по выбранным членам "филд-сета", слетает на самом начале обхода "дерева" "филд-сета", при этом "ругается" на то, что не может определить состояние FilterUpdate.StateOf(memRoot) . Называется - приехали... FilterUpdate и его StateOf - цитирую: "NOTE: FilterUpdates are hidden object model. This means they are not fully supported (though sometimes quite handy!)." , что хочешь - то и делай... З.Ы. вот счаз качаю все мыслимые "крайние" сервис-паки на Офис-2003, надеюсь на чудо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 13:35 |
|
||
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
И еще: Код нашел в MSDN For Each pFieldset In MyPT.ActiveView.FilterAxis.FieldSets For Each pfield In pFieldset.Fields On Error Resume Next For Each varValue In pfield.IncludedMembers MsgBox pField.UniqueName & ".[" & varValue.Value & "] (Included)" Next Next Next Но он не хочет работать! Подскажите пожалуйста в чем дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 16:31 |
|
||
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
И еще вопрос. Как можно в DrillThrough запросе сделать фильтр (или) например по двум членам одного измерения. Пример: DRILLTHROUGH SELECT {[Подразделение].[All Full Name].[Name].[User]} on 0 FROM [CubeName] WHERE {[Дата Начала].[All Дата Начала].[2005], [Дата Начала].[All Дата Начала].[2006]} В MSDN написано, что так можно (в 2005) У меня 2000. Подскажите, как можно эту задачу решить на 2000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 11:52 |
|
||
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
на 200 никак ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 12:26 |
|
||
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
Вернусь к вопросу. Как можно получить выбранные фильтры в OWC11. В MSDN есть код: Sub PrintAxisFilters(pAxis As Object) Dim pFieldset As OWC10.PivotFieldSet Dim pfield As OWC10.PivotField Dim varValue As Variant With pAxis For Each pFieldset In .FieldSets For Each pfield In pFieldset.Fields Debug.Print "Field: " & pfield.Name On Error Resume Next For Each varValue In pfield.IncludedMembers Debug.Print varValue.Value & vbTab & "(Included)" Next For Each varValue In pfield.ExcludedMembers Debug.Print varValue.Value & vbTab & "(Excluded)" Next Next Next End With End Sub Этот код показывает (Excluded), но не показывает (included)! Я его упростил (убрал цикл, показывающий excluded) примерно так: For Each pFieldset In MyPT.ActiveView.FilterAxis.FieldSets For Each pfield In pFieldset.Fields On Error Resume Next For Each varValue In pfield.IncludedMembers MsgBox varValue.UniqueName & "] (Included)" Next Next Next Но он не показывает, выбранные члены фильтра! Подскажите в чем дело! Ни как не могу с этим справится :( Заранее благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 14:21 |
|
||
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
поищите по форуму. я сталкивался с подобной проблемой. и код с форума мне помог ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 17:25 |
|
||
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за помощь! Я решил проблему. Вот код (выводит все выбранные фильтры): Dim ptconst Sub MyPT_DblClick() ... Set ptconst = MyPT.Constants Filter1() ... End Sub Sub Filter1() Dim oChildren Dim sFS Dim i 'Выводим по 1-му фильтру!!!! Пока без цикла по всем фильтрам :(( Set oChildren = MyPT.ActiveView.FieldSets(0).Member.ChildMembers For i = 0 To oChildren.Count - 1 Recurse2 oChildren(i) Next End Sub Sub Recurse2(oPM) Dim oFUpd 'OWC10.PivotFilterUpdate Dim nState Dim i Set oFUpd = oPM.Field.FieldSet.CreateFilterUpdate nState = oFUpd.StateOf(oPM) If (nState = ptconst.plMemberStateChecked) Then MsgBox oPM.UniqueName ElseIf (nState = ptconst.plMemberStateGray) Then For i = 0 To oPM.ChildMembers.Count - 1 Recurse2 oPM.ChildMembers(i) Next ElseIf (nState = ptconst.plMemberStateClear) Then End If End Sub Неужели в AS2000 никак нельзя задать в запросе DrillThrough фильтр по нескольким членам одного измерения??? Очень странно... Все равно всем спасибо.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 19:02 |
|
||
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
NikolaySНеужели в AS2000 никак нельзя задать в запросе DrillThrough фильтр по нескольким членам одного измерения??? нельзя. более того, по СМ тоже нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 20:48 |
|
||
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
И еще вопрос. Как можно в DrillThrough запросе сделать фильтр (или) например по двум членам одного измерения. Пример: DRILLTHROUGH SELECT {[Подразделение].[All Full Name].[Name].[User]} on 0 FROM [CubeName] WHERE {[Дата Начала].[All Дата Начала].[2005], [Дата Начала].[All Дата Начала].[2006]} В MSDN написано, что так можно (в 2005) В AS2005 это тоже невозможно (а где в MSDN написано что можно ? Надо бы поправить документация). Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 21:22 |
|
||
|
OWC получение фильтров
|
|||
|---|---|---|---|
|
#18+
Может и нельзя. Я просто на 2005 не пробовал. Может я чего не понимаю. Но вот ссылка http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/sql2k5_anservdrill.asp Там написано DRILLTHROUGH SELECT {[Measures].[Store Sales]} on 0, {[Customer].[Geography].[USA]} on 1 FROM [Sales] WHERE {[Time].[Year].[2004], [Time].[Year].[2005]} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 12:46 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=33581232&tid=1870488]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 265ms |
| total: | 456ms |

| 0 / 0 |
