powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / OWC получение фильтров
13 сообщений из 13, страница 1 из 1
OWC получение фильтров
    #33576504
NikolayS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Может ли кто нибудь подсказать как получить фильтры из OWC11.

Проблема следующая:
Есть куб и OWC11, показывающая его.
Необходимо по двойному клику на cell получить установленные фильтры для последующего формирования MDX запроса.
Двойной клик я обрабатываю и вытаскиваю выбранный срез по строкам и столбцам (MyPT.Selection.Item(0).Cell.ColumnMember.UniqueName)

Формирую примерно следующий запрос:
SELECTFROM [CubeName] WHERE ([Дата].[All Дата].[2005], [Name].[All Full Name].[user])

Необходимо вытащить фильтры.

Заранее благодарю!
...
Рейтинг: 0 / 0
OWC получение фильтров
    #33576678
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в офис тулпаке есть пример по drillthrough. там есть код получения фильтров
...
Рейтинг: 0 / 0
OWC получение фильтров
    #33576856
NikolayS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, я там копался.
Но так и не понял...
Единственное, что у меня получилось:
Вывести имя измерения:
for i=0 To (MyPT.ActiveView.FilterAxis.FieldSets.Count-1)
MsgBox MyPT.ActiveView.FilterAxis.FieldSets(i).UniqueName
Next

А мне надо выбранные member'ы ([Дата].[All Дата].[2005])

Кстати в toolpack'e очень много багов
(если выбрать множественный фильтр, то он игнорирует вообще этот фильтр)
...
Рейтинг: 0 / 0
OWC получение фильтров
    #33576858
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, надеюсь на чудо...
...
Рейтинг: 0 / 0
OWC получение фильтров
    #33577612
NikolayS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще:
Код нашел в 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

Но он не хочет работать!
Подскажите пожалуйста в чем дело.
...
Рейтинг: 0 / 0
OWC получение фильтров
    #33579465
NikolayS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще вопрос.
Как можно в DrillThrough запросе сделать фильтр (или) например по двум членам одного измерения.

Пример:
DRILLTHROUGH
SELECT {[Подразделение].[All Full Name].[Name].[User]} on 0
FROM [CubeName]
WHERE {[Дата Начала].[All Дата Начала].[2005], [Дата Начала].[All Дата Начала].[2006]}

В MSDN написано, что так можно (в 2005)
У меня 2000.
Подскажите, как можно эту задачу решить на 2000
...
Рейтинг: 0 / 0
OWC получение фильтров
    #33579613
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на 200 никак
...
Рейтинг: 0 / 0
OWC получение фильтров
    #33580167
NikolayS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вернусь к вопросу.
Как можно получить выбранные фильтры в 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

Но он не показывает, выбранные члены фильтра!
Подскажите в чем дело! Ни как не могу с этим справится :(
Заранее благодарю.
...
Рейтинг: 0 / 0
OWC получение фильтров
    #33580993
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поищите по форуму. я сталкивался с подобной проблемой. и код с форума мне помог
...
Рейтинг: 0 / 0
OWC получение фильтров
    #33581232
NikolayS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь!
Я решил проблему.
Вот код (выводит все выбранные фильтры):

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 фильтр по нескольким членам одного измерения???
Очень странно...

Все равно всем спасибо..
...
Рейтинг: 0 / 0
OWC получение фильтров
    #33581408
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolaySНеужели в AS2000 никак нельзя задать в запросе DrillThrough фильтр по нескольким членам одного измерения??? нельзя. более того, по СМ тоже нельзя.
...
Рейтинг: 0 / 0
OWC получение фильтров
    #33581429
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще вопрос.
Как можно в 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
...
Рейтинг: 0 / 0
OWC получение фильтров
    #33583804
NikolayS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может и нельзя. Я просто на 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]}
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / OWC получение фильтров
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]