|
|
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Есть определенное желание создать отчет в котором юзеры самостоятельно выбирают детализацию (группировку). Подскажите плиз, можно ли динамически перед ретривом DW удалить в отчете одну или несколько созданных в нем групп? В DW паинтере все просто Row -> Delete Group -> № группы. Либо какие могут быть альтернативы? Идея по созданию нескольких форм DW не подходит, сложно следить за несколькими формами. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 17:38 |
|
||
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
простейшее что можно предложить это делать у футера и хедера группы высоту 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 17:50 |
|
||
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
Этот вариант не подходит т.к. если скрыть группу верхнего уровня, то все группы уровнем ниже группируются не верно, происходит дублирование одинаковых значений из скрытых групп. А вот если группу удалить совсем то все будет верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 18:10 |
|
||
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
можно динамически формировать синтаксис для создания датавиндов. и создавать датавиндов с помощью ф-ции create() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 18:39 |
|
||
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
может вам группы совсем не нужны? а нужно св-во supress repeating values? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 18:42 |
|
||
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
Если во вложенных группах есть агрегатные выражения по группам, то при удалении группы ссылки на остальные группы надо перенумеровывать. Если не задаваться целью сделать универсально удаление группы из любого DW то можно сделать достаточно простой парсер синтаксиса DW. Допустим надо удалить группу 1. - Делим синтаксис на строки по ~r~n. - Ищем строки содержащие "group(level=1" или "header.1" или "trailer.1" и удаляем их. - Ищем строки содержащие "group(level=<n>" или "header.<n>" или "trailer.<n>" или "for group <n>" и для n>1 заменяем в строке n на n-1 Неуниверсальность этого алгоритма заключается в следующих допущениях: - описание группы или столбца ссылающегося на группу целиком находится на одной строке - выражение "for group <n>" записано в DW именно в таком виде (без комментариев, лишних пробелов и переводов строк) По мне так не существенные ограничения. PS. Есть у меня один объект который позволяет легко делать такой поиск и замену. Могу выдрать его из проекта если будут сложности с реализацией алгоритма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 18:51 |
|
||
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
Перед открытием репорта выбрось им response! окно, покажи им возможные колонки которые ты хочеш показать и пусть они сами выберут GroupBy и Sort. Интерфейс можеш предумать сам или что-то типа окна которое выскакивает когда зовёш Filter(). я конечно деталей всех не знаю, но сколько может быть вариантов GroupBy и Sort, которые имеют смысл? Ну а потом: a. Идея нескольких datawindow's думаю не плохая, ну сделай им дюжину, а потом меняй datawindow.object б. Create, settrans, retrieve ... в. У нас часто запросы на новые репорты, и идя на встречу трудяшимся, ну и шобы не делать билды по поводу одного репорта, я сделал механизм сохранения всего *custom* репорта в базе данных. Если интересно могу поделитса в деталях, работает как часы, клиенты пишат от счастья. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 19:26 |
|
||
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
Группировать по computed field. Expression для Computed менять с помощью dw.Modify("{computed_name}.expression='...'") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 21:23 |
|
||
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрейГруппировать по computed field. Expression для Computed менять с помощью dw.Modify("{computed_name}.expression='...'") И GroupCalc() звать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 22:56 |
|
||
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
ФилиппИ GroupCalc() звать...Ну это же очевидно... Говорит как-то Лифшиц Ландау: «Что делать? я целую тетрадь выкладок потерял в трамвае». Ландау отвечает: «Да ничего, напишем, как всегда: „откуда очевидно…“» ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2007, 01:40 |
|
||
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрейГруппировать по computed field. Expression для Computed менять с помощью dw.Modify("{computed_name}.expression='...'") Неплохая идея. буду пробовать. Большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2007, 09:13 |
|
||
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
voronkв. У нас часто запросы на новые репорты, и идя на встречу трудяшимся, ну и шобы не делать билды по поводу одного репорта, я сделал механизм сохранения всего *custom* репорта в базе данных. Если интересно могу поделитса в деталях, работает как часы, клиенты пишат от счастья. Очень интересно. Буду признателен за помощь. ShanderAV@rambler.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2007, 09:26 |
|
||
|
Динамическое изменение DW
|
|||
|---|---|---|---|
|
#18+
Андрей Ш. ЗоринАндрейГруппировать по computed field. Expression для Computed менять с помощью dw.Modify("{computed_name}.expression='...'") Неплохая идея. буду пробовать. Большое спасибо. Все красиво получилось, реализация такая: сделал n-груп по computed field с содержимым expression - "". установил ширину header в 0, затем по порядку изменяю в группе с помощью dw.Modify содержимое expression на нужное и показываю header с нужной шириной, кол-во групп произвольное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2007, 12:49 |
|
||
|
|

start [/forum/moderation_log.php?user_name=VOLMR]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 720ms |
| total: | 886ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...