12.05.2010, 10:06 | #1 |
Участник
|
Сводные таблицы и Olap в Dax2009
Всем Добрый день
Я начинающий в Olap Хочу чтоб на форме выводилась сводная таблица Надо чтоб она формировалась из нескольких таблиц в Аксапте т е там идет выборка с объединением и агрегатной функцией Короче говоря создал я таблицу (временную) где собрал данные в нужном порядке теперь весь весь вопрос состоит как сделать чтоб из временной таблицы данные попали в сводную таблицу в соотв. виде( там нужно чтоб два поля в строке два поля в столбце и одно как данные) ЗЫ Если эту временную таблицу выгрузить в Excel то там сводную таблицу построить не сложно Вопрос именно а как Аксапте чтоб сводная таблица была на форме? |
|
12.05.2010, 10:32 | #2 |
Участник
|
Использовать ActiveX компонент Microsoft Office Pivot Table, например. В нем можно будет как открыть напрямую view (или произвольный SQL-запрос) в БД, так и "подсунуть" заранее подготовленные данные (см. пример в последней версии российского модуля ЗП и кадры).
__________________
Ivanhoe as is.. |
|
12.05.2010, 10:47 | #3 |
Участник
|
ActiveX Pivot Table это понятно
Если на прямую обратится к базе эт не вариант тк нет доступа на AOS на прямую А вот как "как подсунуть" временную таблицу я не знаю ЗЫ А где конкретно в зарплата и кадры (управление персоналом?) и дальше где? |
|
12.05.2010, 11:05 | #4 |
Участник
|
При чем тут доступ к AOS и к БД? Можно же пользователю дать права на вьюху напрямую на СУБД, как вариант.
Насчет ЗП и Кадров - они ставятся отдельно в виде слоя LOS, в меню это будет не в управлении персоналом, а отдельный "модуль" "Расчеты с персоналом".
__________________
Ivanhoe as is.. |
|
12.05.2010, 11:18 | #5 |
Участник
|
А в расчётах с персоналом где конкретно?
БД и AOS на одном серваке и у меня нет доступа напрямую А нельзя ка то просто "подцепить" временную таблицу к сводной (типа как в экселе) |
|
12.05.2010, 11:27 | #6 |
Moderator
|
Pudd, а есть веская причина, по которой Вы хотите непременно оставаться на форме в Аксапте? Вам нужна какая-то именно аксаптовская реакция на события? Например, по даблклику чего-либо в сводной таблице выводить строку в infolog или открывать другую форму с позиционированием на значении из кликаемой ячейки сводной таблицы.
Если нет, то не мучайтесь - выводите сводную в Excel и предъявляйте пользователю для дальнейшего анализа. Это проще и гибче. К тому же можно элегантно выдать данные прямо в кэш сводной таблицы, не создавая никаких временных структур в Аксапте (ну, разве только ADODB.Recordset в оперативной памяти): http://www.axforum.info/forums/blog.php?b=60 |
|
|
За это сообщение автора поблагодарили: Pudd (1). |
12.05.2010, 11:29 | #7 |
Участник
|
|
|
12.05.2010, 11:50 | #8 |
Участник
|
Цитата:
Сообщение от Gustav
Pudd, а есть веская причина, по которой Вы хотите непременно оставаться на форме в Аксапте? Вам нужна какая-то именно аксаптовская реакция на события? Например, по даблклику чего-либо в сводной таблице выводить строку в infolog или открывать другую форму с позиционированием на значении из кликаемой ячейки сводной таблицы.
http://www.axforum.info/forums/blog.php?b=60 Всётаки лутше б именно на форме Цитата:
Тема попрежнему актуальна Последний раз редактировалось Pudd; 12.05.2010 в 11:53. |
|
12.05.2010, 12:14 | #9 |
Участник
|
|
|
12.05.2010, 12:35 | #10 |
Moderator
|
При использовании ActiveX (OWC PivotTable) неприятность заключается в том, что данные для сводной из Аксапты нужно сложить в таблицу, а потом обратиться к ней как к ВНЕШНЕЙ (!). Поэтому получается, что временной она быть никак не может, а должна быть постоянной. Если только под термином "временная" не понимается непродолжительность срока хранения информации в этой таблице, а так это абсолютно разные "сессии" записи Аксаптой и извлечения данных из этой "временной" таблицы ActiveX'ом (в данной конкретной ситуации по случаю лежащем на форме Аксапты).
|
|
12.05.2010, 12:45 | #11 |
Участник
|
А можно ли в ActiveX также как и на лист Excel данные из временной таблицы перекинуть посредством ADO?
|
|
|
За это сообщение автора поблагодарили: Gustav (3). |
12.05.2010, 12:46 | #12 |
Участник
|
Коллеги, так много советов, а кто-нибудь все-таки смотрел решение в ЗП и кадрах? =)
Я не программист, но насколько я понял, там делается что-то временное через ADODB.Recordset. Именно "это" открывается в PivotTable. Если же выгрузить сводную в Excel средствами PivotTable - то сначала копируются сами данные и уже по ним строится сводная, прямых запросов в БД не будет. Расчеты с персоналом/ Отчеты/ Сводные таблицы/
__________________
Ivanhoe as is.. |
|
12.05.2010, 12:50 | #13 |
Moderator
|
Цитата:
Цитата:
К великому моему сожалению, данный метод передачи рекордсета сводной таблице нельзя применить в случае ActiveX - OWC PivotTable. В его объектной модели, увы, отсутствует объект PivotCache...
|
|
|
За это сообщение автора поблагодарили: S.Kuskov (3). |
12.05.2010, 13:13 | #14 |
Moderator
|
|
|
12.05.2010, 13:20 | #15 |
Участник
|
Написал я класс по мативу джоба от Gustav но всётаки надо натйи решение через ActiveX
Таблица у меня временная (обычная таблица в свойстве Temporary =yes) Но это не проблема в принципе можно сделать постоянную Может есть какой то простой пример наподобии джоба |
|
12.05.2010, 13:26 | #16 |
Участник
|
Если кратко, надеюсь, не упустил чего-то важного:
1. COM comRS; 2. comRS = new COM(#ADODBRecordset); 3. Извлекаем нужные данные из нужных таблиц, вызываем comRS.AddNew(); заполняем значения полей; comRS.update(); 4. Инициализируем сводную ActiveX pivotTable; 5. Передаем данные в сводную pivotTable.DataSource(comRS);
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: Gustav (29). |
12.05.2010, 14:10 | #17 |
Участник
|
Gustav а как в поля данных (где 1) занести не количество совпадений (1) а значения поля
т е например есть 5 полей в таблице 2 строки 2 столбцы а 1 данные Последний раз редактировалось Pudd; 12.05.2010 в 14:20. |
|
12.05.2010, 14:17 | #18 |
Участник
|
Пример
Прилагаю пример, сделанный за 30 минут по аналогии со сводными RHRM.
Работает на Dynamics AX 2009 SP1 RU4. Для демонстрации - откройте форму. На ней отображается сводная, составленная из двух полей "ItemId" и "Name", данные берутся из таблицы номенклатур.
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: Pudd (1). |
12.05.2010, 14:27 | #19 |
Moderator
|
|
|
12.05.2010, 14:55 | #20 |
Участник
|
а как сделать чтоб поля сразу в таблицы были т е чтоб не надо было их переносить мышкой?
|
|