Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Динамическое изменение DW / 13 сообщений из 13, страница 1 из 1
16.10.2007, 17:38
    #34872624
Андрей Ш.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
Доброго времени суток. Есть определенное желание создать отчет в котором юзеры самостоятельно выбирают детализацию (группировку). Подскажите плиз, можно ли динамически перед ретривом DW удалить в отчете одну или несколько созданных в нем групп? В DW паинтере все просто Row -> Delete Group -> № группы. Либо какие могут быть альтернативы? Идея по созданию нескольких форм DW не подходит, сложно следить за несколькими формами. Заранее спасибо.
...
Рейтинг: 0 / 0
16.10.2007, 17:50
    #34872672
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
простейшее что можно предложить это делать у футера и хедера группы высоту 0
...
Рейтинг: 0 / 0
16.10.2007, 18:10
    #34872744
Андрей Ш.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
Этот вариант не подходит т.к. если скрыть группу верхнего уровня, то все группы уровнем ниже группируются не верно, происходит дублирование одинаковых значений из скрытых групп. А вот если группу удалить совсем то все будет верно.
...
Рейтинг: 0 / 0
16.10.2007, 18:39
    #34872824
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
можно динамически формировать синтаксис для создания датавиндов.
и создавать датавиндов с помощью ф-ции create()
...
Рейтинг: 0 / 0
16.10.2007, 18:42
    #34872834
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
может вам группы совсем не нужны?
а нужно св-во supress repeating values?
...
Рейтинг: 0 / 0
16.10.2007, 18:51
    #34872859
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
Если во вложенных группах есть агрегатные выражения по группам, то при удалении группы ссылки на остальные группы надо перенумеровывать.
Если не задаваться целью сделать универсально удаление группы из любого 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. Есть у меня один объект который позволяет легко делать такой поиск и замену. Могу выдрать его из проекта если будут сложности с реализацией алгоритма.
...
Рейтинг: 0 / 0
16.10.2007, 19:26
    #34872938
voronk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
Перед открытием репорта выбрось им response! окно, покажи им возможные колонки которые ты хочеш показать и пусть они сами выберут GroupBy и Sort. Интерфейс можеш предумать сам или что-то типа окна которое выскакивает когда зовёш Filter().

я конечно деталей всех не знаю, но сколько может быть вариантов GroupBy и Sort, которые имеют смысл?

Ну а потом:
a. Идея нескольких datawindow's думаю не плохая, ну сделай им дюжину, а потом меняй datawindow.object

б. Create, settrans, retrieve ...
в. У нас часто запросы на новые репорты, и идя на встречу трудяшимся, ну и шобы не делать билды по поводу одного репорта, я сделал механизм сохранения всего *custom* репорта в базе данных. Если интересно могу поделитса в деталях, работает как часы, клиенты пишат от счастья.
...
Рейтинг: 0 / 0
16.10.2007, 21:23
    #34873128
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
Группировать по computed field.
Expression для Computed менять с помощью dw.Modify("{computed_name}.expression='...'")
...
Рейтинг: 0 / 0
16.10.2007, 22:56
    #34873249
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
ЗоринАндрейГруппировать по computed field.
Expression для Computed менять с помощью dw.Modify("{computed_name}.expression='...'")
И GroupCalc() звать...
...
Рейтинг: 0 / 0
17.10.2007, 01:40
    #34873371
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
ФилиппИ GroupCalc() звать...Ну это же очевидно...
Говорит как-то Лифшиц Ландау: «Что делать? я целую тетрадь выкладок потерял в трамвае».
Ландау отвечает: «Да ничего, напишем, как всегда: „откуда очевидно…“»
...
Рейтинг: 0 / 0
17.10.2007, 09:13
    #34873582
Андрей Ш.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
ЗоринАндрейГруппировать по computed field.
Expression для Computed менять с помощью dw.Modify("{computed_name}.expression='...'")

Неплохая идея. буду пробовать. Большое спасибо.
...
Рейтинг: 0 / 0
17.10.2007, 09:26
    #34873612
Андрей Ш.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
voronkв. У нас часто запросы на новые репорты, и идя на встречу трудяшимся, ну и шобы не делать билды по поводу одного репорта, я сделал механизм сохранения всего *custom* репорта в базе данных. Если интересно могу поделитса в деталях, работает как часы, клиенты пишат от счастья.

Очень интересно. Буду признателен за помощь. ShanderAV@rambler.ru
...
Рейтинг: 0 / 0
17.10.2007, 12:49
    #34874601
Андрей Ш.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое изменение DW
Андрей Ш. ЗоринАндрейГруппировать по computed field.
Expression для Computed менять с помощью dw.Modify("{computed_name}.expression='...'")

Неплохая идея. буду пробовать. Большое спасибо.

Все красиво получилось, реализация такая: сделал n-груп по computed field с содержимым expression - "". установил ширину header в 0, затем по порядку изменяю в группе с помощью dw.Modify содержимое expression на нужное и показываю header с нужной шириной, кол-во групп произвольное.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Динамическое изменение DW / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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