Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / "Smart" datawindow / 25 сообщений из 27, страница 1 из 2
16.08.2004, 12:43
    #32650723
Winnie-the-Pooh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
Привет!

Неугомонные юзвера потребовали следующего :
0) Не хочу быть вольною царицей, хочу ... Ой нет, это было в прошлый раз... :-))

1) Каждый юзер может под себя настроить количество и размер полей. Список полей заранее известен.
2) Каждый юзер может под себя настроить группировки. Список возможных группироваок известен.
3) Уровень "детализации"... угадали, может изменяться каждым пользователем.

При открытиии приложения следующий раз, пользователь получает dataset согласно ранее заданным установкам.

Каким способом их удовлетворять в этот раз более или менее понятно, но, не хотелось бы изобретать велосипед в n+1 раз. Посему ссылки на класические образцы и собственные ценные замечания весьма приветствуются... Версия билдера - девятая, если это важно.
...
Рейтинг: 0 / 0
16.08.2004, 13:50
    #32650895
roleks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
А в чем проблема?

setting = dw_1.Describe("emp_name.X") -- сохранение
dw_1.Modify("emp_name.X=10") -- загрузка



и т д...

см. хелп
...
Рейтинг: 0 / 0
16.08.2004, 14:24
    #32650995
Ikar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
2 Winnie-the-Pooh:
Покопайте в направлении методов

GetFullContext / SetFullContext
GetFullState / SetFullState
GetStateStatus / SetStateStatus

возможно, это то, что Вам нужно...
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
16.08.2004, 15:00
    #32651078
Winnie-the-Pooh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
2 rolex
Проблем особых нет, что, в принципе, и следовало из текста вопроса. Вопрос скорее о проектировании, чем о кодировании. Например, мы можем хранить кастомизированную версию datawindow (скажем, в базе). В этом есть свои плюсы и минусы... А можем придумать список параметров и хранить их...

2Ikar. Не сомневался, что вы ответите. Спасибо, посмотрю в BOLе.

Вопрос, с моей точки зрения, не исчерпан.
...
Рейтинг: 0 / 0
16.08.2004, 17:55
    #32651592
Winnie-the-Pooh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
По зрелому размышлению, я вообще не уверен, что задача ровно решаема на PB. Если я не прав, то поправьте.
Соображения следующие:
1) Если datawindow - grid, то перетаскивая колонки, я перетаскиваю и групповые заголовки. Если tabular - resize & move column становится неочевидным.
2) Я не могу управлять видимостью содержимого известного экземпляра группы, если он содержит что-либо кроме details. SetDetailsHeight у меня есль в арсенале, а скажем SetGroupHeight - нет. Понятно, я могу всё перетащить в details и группировать (с подсчётом промежуточных сумм) "ручками". Но это уже типичный workaround, isn't it?

Ещё раз повторяю, если я не прав, и чего-то "прозевал" - поправьте меня, коллеги!!
...
Рейтинг: 0 / 0
16.08.2004, 18:43
    #32651670
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
В принципе всё это делается, акромя группировок, с ними вольную царицу нужно послать к Кащею на ... иголку :-)
...
Рейтинг: 0 / 0
16.08.2004, 19:45
    #32651740
Winnie-the-Pooh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
2Филипп
А нет ли у вас, Филипп, в запасе одной из ваших многочисленных и весьма полезных ссылок, подходящих к этому случаю?

А.ФилатовВызывает антирес
Ваш технический прогресс:
Как у вас там сеют брюкву -
С кожурою али без?..

Иными словами, а как Вы решаете эти детские для вас проблемки?
...
Рейтинг: 0 / 0
16.08.2004, 19:58
    #32651747
Winnie-the-Pooh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
Очепятка - следует читать Л. Филатов, Леонид. Светлая ему память...
...
Рейтинг: 0 / 0
16.08.2004, 21:01
    #32651772
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
Признаюсь честно - individual user preferences не делал, и вам советую этих individual users послать подальше :-)
Но тем не менее скажу следующее:
1) PFC имеет pfc_n_cst_winsrv_preference сервис - очень разумно остановившийся на окнах, а не на datawindow (пишет всё в registry/ini). Его довольно элегантно можно расширить, чтобы писать к примеру Sort/Filter user preferences. Можно конечно и пробовать писать характеристики изменённого грида (представляю как это засрёт registry, но вольной царице это ж надо)

2) Всё остальное имплицитно подразумевает написание эмуляции Datawindow Painterа и хранение datawindow синтакса в СУБД (в блобе или нет, это вам решать, а тогда и ясно, нужно ли использовать GetFullState / SetFullState).
На продукте, где я этим занимался 8 лет назад (и где была написана эмуляция Datawindow Painterа) не использовали блобы из-за проблем с репликацией, поэтому писали в varcharы последовательно, а на клиенте собирали в modify stringи...
...
Рейтинг: 0 / 0
17.08.2004, 01:55
    #32651899
QueryMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
Save customized DW as psr on user machine and if exists use it as dataobject otherwise use regular dw object. Simple and effective.
...
Рейтинг: 0 / 0
17.08.2004, 10:39
    #32652225
Winnie-the-Pooh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
2Филипп
Спасибо. Архидельный ответ. Впрочем, иного от Вас и не ожидал.

2QueryMan. Thanks for your advise. I'm accoustomed to that approarch. Yeah, it's "simple and effective" indeed. But in this case, I plan to store whole settings on database. I anticipate some dificulties with saving / restoring datawindow syntax onto RDBMS table without blob, but I gonna try... ;-)) BTW, as far as it's my thread, I'll take the liberty to say: Welcome to the forum! Well, The Big Apple joins to PowerBuilder @ SQL.RU... Yahoo!
...
Рейтинг: 0 / 0
17.08.2004, 11:16
    #32652315
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
У меня есть следующая идея по этому вопросу, которую я все порываюсь реализовать, но все пока не хватает времени. До конца пока не проработана, поэтому мне самому интересно ее обсудить. Итак.
1. Делаем DataWindow, в котором откачиваем данные.
2. Делаем DataWindow которое будет шаблоном для отображаемых данных + какая-то тулза для его модификации в run time. Или делаем какую-то тулзу которая задает структуру отображения данных только в run time не основываясь на каком-либо DataWindow. У меня здесь есть идея сделать что-то похожее, что существует для этого в компасе - это такая бухгалтерская программа и скрестить это с DataWindow.
3. Retrieve'им данные.
4. Для визуализации все это загоняем в HTML, при этом мы можем как угодно управлять формированием этого HTML, в т.ч SetGroupHeigth и т.д. + ко всему, по сути, нам доступен весь функционал DataStore (вычисляемые поля, expression'ы и т.д.).
5. Для отображения и печати используем DHTML Edit Control for IE. При этом можно редактировать получившийся отчет "на лету" (в т.ч. и отчеты аналоги composite).
И все это не так сложно, как кажется на первый взгляд. Кое-какие наработки по этим вопросам у меня есть. Нет только пока времени связать все в единое целое.
...
Рейтинг: 0 / 0
17.08.2004, 12:26
    #32652513
Estets
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
Я думаю есть 3 разные проблемы это "Customизация":
1) форм для редактирования
2) отчетов (в том числе композитных)
3) гридов

По первому пункту, ничего кроме динамического набора DW мне не приходит, есть заделы, но довести до ума сил не хватило

По второму, вопрос решен поставкой клиентам отчетов в PBL и интеграцией в приложение вызова DW Builder'а, и переноса сложных отчетов в Crystal Report аналогично с интеграцией вызова

Третий пункт самый интересный, сразу могу сказать, что сейчас у нас он не решен, но практически все клиенты этого хотят ;)
От сохранения полного синтаксиса DW мы сразу отказались, т.к. все DW построены на основе хранимых процедур и так-то синхронизация серверной и клиентской части это еще та проблема, а если каждое рабочее место имеет свой вариант DW....... хе......

В старой версии программы запоминались три вещи (и сохранялись в БД):
1) Порядок полей в гриде
2) Ширина полей в гриде
3) Видимость полей в гриде

Вообщем первого и второго пункта за глаза хватает для удовлетворения пользователей, а все новые поля появляются стандартной ширины и в конце грида.
...
Рейтинг: 0 / 0
17.08.2004, 12:47
    #32652599
Winnie-the-Pooh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
2Локшин Марк
Мне не вполне понятен пункт №4. Как это планируется делать?

2Estets В данном случае требуется что-то между вашим вторым и третьим вариантом. При этом запуск DW builder'а, скажем, не одобрят. Про CR в данном контексте речь вообще не идёт. BTW, а почему DW в базе не храните?
...
Рейтинг: 0 / 0
17.08.2004, 13:33
    #32652754
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
Winnie-the-Pooh2Локшин Марк
Мне не вполне понятен пункт №4. Как это планируется делать?
Посмотрите на моем сайте lokshinmark.narod.ru . Обратить внимание на файл CPattern. Вместе с библиотечкой ExptHTML он решает проблему получения HTML версии отчета на основе DataWindow. Ну там обо всем написано и примеры есть, если кому интересно...
...
Рейтинг: 0 / 0
17.08.2004, 13:45
    #32652780
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
...
Рейтинг: 0 / 0
17.08.2004, 14:46
    #32652972
Estets
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
2Winnie-the-Pooh
По поводу DWБилдера - часто возникают проблемы (у клиентов) типа поменялся телефон который необходимо печатать в шапке отчетов... и т.п.

А по поводу хранения DW в базе есть несколько проблем например
Скорость, мы работаем только с ханимками и блобы отпадают, а резать на куски и клеить на клиенте это долго.
Обновление, выслать PBL с исправленными отчетами проще чем обновить данные в базе.
Изменение, для исправления необходимо выкачать из базы DW на клиента исправить его и закачать обратно
Композитные DW ну и всякие DDDW, может вопрос динамического поднятия синтаксиса и решается, но я например не знаю как
...
Рейтинг: 0 / 0
17.08.2004, 15:20
    #32653078
Winnie-the-Pooh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
2Локшин Марк
Спасибо. Я так и думал, что это предполагает использование вашей библиотеки. А с сайтом вашим знаком, как и все на этом форуме, ИМХО.
2DIGITALPRO
Спасибо, не придётся вспоминать синтакисис.
2Estets
Спасибо, теперь ваша позиция вполне понятна. Действительно, для поставок множеству клиентов (и, например, для версионного хранения) PBL удобнее строки / строк в базе, не говоря уже о композитах.
...
Рейтинг: 0 / 0
17.08.2004, 15:53
    #32653184
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
Так как насчет моей идеи? По-моему выглядит достаточно заманчиво?
...
Рейтинг: 0 / 0
17.08.2004, 21:13
    #32653689
QueryMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
Thanks for welcoming me here.
You probably guess that I read and understand Russian pretty well better than anything else indeed. I'm writing in English only because I can not install Cyrillic support on my machines here(very restricted environment).
Back to the subject. You can try to store customization setting in DB, but to me it makes cense only if majority of the users using different machines, which is possible but not likely scenario. Suggested approach is 5 lines of code max (excluding dw customization code) so it is not difficult to try. I use it for dw customization and disaster recovery for around 10 years already and it saved my soul quite a few times.
...
Рейтинг: 0 / 0
18.08.2004, 10:42
    #32654118
Winnie-the-Pooh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
2QueryMan
Я понял, что вы пишете по-английски из-за отсутствия драйвера через несколько минут после отправки сообщения...

В моём случае возможны оба варианта - на одной машине разные юзеры и юзер, сбежавший на чужую машину. Не самый вероятный, но вполне возможный 'scenario', как вы и пишете.
...
Рейтинг: 0 / 0
24.08.2004, 21:05
    #32663791
Winnie-the-Pooh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
Локшин МаркТак как насчет моей идеи? По-моему выглядит достаточно заманчиво?

Извините за нескорый ответ, - в частности хотелось окончательно определиться. Отвечу так - идея класная, но в первой (пилотной) версии "мы пойдем другим путём" ©Вовчик Симбирский.
С вашего разрешения, по мере перехода к второй (боевой) версии я обращусь к Вам за более подробными разъяснениями.

Regards,
Pooh.
...
Рейтинг: 0 / 0
01.09.2004, 13:38
    #32675293
ZhV
ZhV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
Здравствуйте все - разрешите представиться.

У меня была похожая задача - "генератор отчетов".
Кастомизация настроек - только подмножество этой штуки.

Суть - "syntax of dw" вместе с некоторыми специальными параметрами хранится в отдельном файле - шаблоне . Шаблон может храниться на локале и/или в сети - при вызове выдается ввиде Tree - выбирай .
Имеется сервис - что-то типа небольшого painter-а - не очень мощного , но состав , положение и размер колонок , фильтры , сортировки и группировки можно менять . Еще - можно вставлять дополнительные computed колонки и редактировать еукстовые .
Имеется небольшое разделение доступа на право пользования и корректировки .
Для юзеров программистом готовится "базовый шаблон" - а юзерам предоставляется право копировать его и "измываться" над ним как угодно.
-
Дальше все просто - подгрузка в пустой dw и retrieve.
После этого (Runtime) - можно менять состав видимых колонок и сортировки.
Весь сервис сделан на обьекте , содержащем подробно распарсенный синтаксис datawindow .

Побочно -
1) на основе распарсенной информации - экспорт в Excel - почти WYSIWYG.
2) любой отчет как таковой поставляется в виде шаблона - внутри там есть и подготовленный SQL запрос и его вид. Перекомпиляция проекта не нужна - обмен шаблонами по e-mail , скорость исполнения требований - до 1 часа .
...
Рейтинг: 0 / 0
01.09.2004, 17:02
    #32675955
Winnie-the-Pooh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
ZhVПобочно -
1) на основе распарсенной информации - экспорт в Excel - почти WYSIWYG.

Спасибо за ответ. А можно с этого места поподробнее?
...
Рейтинг: 0 / 0
01.09.2004, 23:50
    #32676453
ZhV
ZhV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Smart" datawindow
To Winnie-the-Pooh

У меня сделано только для GRID-dw - остальное пока не очень востребовано.
Очень подробно не получится. Идея примерно в следующем

1) на основе обьекта распарсенных данных datawindow (многие из которых никаким Describe() не получить) анализируется конфигурация column - как datasource так и колонки визуализации ( в т.ч. computed и text)
2) создается копия обьекта , в которой порядок column datasource приводятся в соответствие c их визуальным расположением
3) для визуальных столбцов типа dddw , dddlb , codetable - производится замещение типа - на строчный
4) для computed визуальных столбцов - создается соответствующий псевдо datasource-column - строчный (char(1000))
5) производится операция реконструкции синтаксиса по новому обьекту и datastore.Create(…)
6) производится поэлементное копирование (с учетом типов) из datawindow-оригинала в datastore
для datasource column , которые не модифицировались по (3) и (4)
7) аналогичное копирование для модифицированных псевдостолбцов из (3) - lookupdisplay(….) ,
для новых (4) - String(evaluate(….))
- скорость копированиея до 1000 ячеек в секунду - раз в 100 быстрее чем копирование через ole , но все же для больших таблиц и для удобства запускается progressbar
8) datastore.saveas(filetmp,Excel!)
9) через ole вытаскивается filetmp - который содержит все данные но не содержит форматов;
- форматируются сразу по столбцам - шрифты, рамки, цвета, выравнивание …
10) создается 2-й лист Excel-а , в который выводятся данные и форматируются по распарсенным данным из подвала , группировок и шапки - заполняются они в этом листе и по мере выполнения - копируются на первый лист начиная от конца к началу , чтобы не портить нумерацию строк ;
11) сервисный sheet и ненужные (visible=0) колонки удаляются и Saveas в нужное место - можно по запросу в диалоге

Я думаю , примерно также сделано у парней из www.desta.com.ua - обратите внимание , что у них есть специальное упоминание о progressbar и обработке dddw, ddlb… У меня даже вызов очень похож
// Функция экспорта в Excel любого GRID DATAWINDOW
// uf_dw_to_excel(datawindow adw_for_export, string as_file_name,string as_rep_name)

Поэтому не буду портить чужую коммерцию - код выкладывать не буду , уж извините. К тому же работа оплачена заказчиком и мне как бы не принадлежит . А еще - довольно много пота :-)

Также я думаю , что без большой нужды лучше не париться - по ходу очень много скрытых и тонких граблей - лучше купить у этих парней готовое . А для кастомизации - вполне достаточно просто сделать нечто аналогичное сервису по обработке обьекта - распарсенного синтаксиса - из первой части моего предыдущего поста (до слова - "побочно").

Удачи.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / "Smart" datawindow / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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