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

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

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

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

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

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

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

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


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