
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.08.2004, 12:43
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
Привет! Неугомонные юзвера потребовали следующего : 0) Не хочу быть вольною царицей, хочу ... Ой нет, это было в прошлый раз... :-)) 1) Каждый юзер может под себя настроить количество и размер полей. Список полей заранее известен. 2) Каждый юзер может под себя настроить группировки. Список возможных группироваок известен. 3) Уровень "детализации"... угадали, может изменяться каждым пользователем. При открытиии приложения следующий раз, пользователь получает dataset согласно ранее заданным установкам. Каким способом их удовлетворять в этот раз более или менее понятно, но, не хотелось бы изобретать велосипед в n+1 раз. Посему ссылки на класические образцы и собственные ценные замечания весьма приветствуются... Версия билдера - девятая, если это важно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.08.2004, 13:50
|
|||
|---|---|---|---|
"Smart" datawindow |
|||
|
#18+
А в чем проблема? setting = dw_1.Describe("emp_name.X") -- сохранение dw_1.Modify("emp_name.X=10") -- загрузка и т д... см. хелп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.08.2004, 14:24
|
|||
|---|---|---|---|
"Smart" datawindow |
|||
|
#18+
2 Winnie-the-Pooh: Покопайте в направлении методов GetFullContext / SetFullContext GetFullState / SetFullState GetStateStatus / SetStateStatus возможно, это то, что Вам нужно... --- С уважением, IKAR ikarhomecenter@narod.ru IkarHomeCenter ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.08.2004, 15:00
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
2 rolex Проблем особых нет, что, в принципе, и следовало из текста вопроса. Вопрос скорее о проектировании, чем о кодировании. Например, мы можем хранить кастомизированную версию datawindow (скажем, в базе). В этом есть свои плюсы и минусы... А можем придумать список параметров и хранить их... 2Ikar. Не сомневался, что вы ответите. Спасибо, посмотрю в BOLе. Вопрос, с моей точки зрения, не исчерпан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.08.2004, 17:55
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
По зрелому размышлению, я вообще не уверен, что задача ровно решаема на PB. Если я не прав, то поправьте. Соображения следующие: 1) Если datawindow - grid, то перетаскивая колонки, я перетаскиваю и групповые заголовки. Если tabular - resize & move column становится неочевидным. 2) Я не могу управлять видимостью содержимого известного экземпляра группы, если он содержит что-либо кроме details. SetDetailsHeight у меня есль в арсенале, а скажем SetGroupHeight - нет. Понятно, я могу всё перетащить в details и группировать (с подсчётом промежуточных сумм) "ручками". Но это уже типичный workaround, isn't it? Ещё раз повторяю, если я не прав, и чего-то "прозевал" - поправьте меня, коллеги!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.08.2004, 18:43
|
|||
|---|---|---|---|
"Smart" datawindow |
|||
|
#18+
В принципе всё это делается, акромя группировок, с ними вольную царицу нужно послать к Кащею на ... иголку :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.08.2004, 19:45
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
2Филипп А нет ли у вас, Филипп, в запасе одной из ваших многочисленных и весьма полезных ссылок, подходящих к этому случаю? А.ФилатовВызывает антирес Ваш технический прогресс: Как у вас там сеют брюкву - С кожурою али без?.. Иными словами, а как Вы решаете эти детские для вас проблемки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.08.2004, 19:58
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
Очепятка - следует читать Л. Филатов, Леонид. Светлая ему память... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.08.2004, 21:01
|
|||
|---|---|---|---|
"Smart" datawindow |
|||
|
#18+
Признаюсь честно - 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и... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2004, 01:55
|
|||
|---|---|---|---|
"Smart" datawindow |
|||
|
#18+
Save customized DW as psr on user machine and if exists use it as dataobject otherwise use regular dw object. Simple and effective. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2004, 10:39
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
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! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2004, 11:16
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
У меня есть следующая идея по этому вопросу, которую я все порываюсь реализовать, но все пока не хватает времени. До конца пока не проработана, поэтому мне самому интересно ее обсудить. Итак. 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). И все это не так сложно, как кажется на первый взгляд. Кое-какие наработки по этим вопросам у меня есть. Нет только пока времени связать все в единое целое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2004, 12:26
|
|||
|---|---|---|---|
"Smart" datawindow |
|||
|
#18+
Я думаю есть 3 разные проблемы это "Customизация": 1) форм для редактирования 2) отчетов (в том числе композитных) 3) гридов По первому пункту, ничего кроме динамического набора DW мне не приходит, есть заделы, но довести до ума сил не хватило По второму, вопрос решен поставкой клиентам отчетов в PBL и интеграцией в приложение вызова DW Builder'а, и переноса сложных отчетов в Crystal Report аналогично с интеграцией вызова Третий пункт самый интересный, сразу могу сказать, что сейчас у нас он не решен, но практически все клиенты этого хотят ;) От сохранения полного синтаксиса DW мы сразу отказались, т.к. все DW построены на основе хранимых процедур и так-то синхронизация серверной и клиентской части это еще та проблема, а если каждое рабочее место имеет свой вариант DW....... хе...... В старой версии программы запоминались три вещи (и сохранялись в БД): 1) Порядок полей в гриде 2) Ширина полей в гриде 3) Видимость полей в гриде Вообщем первого и второго пункта за глаза хватает для удовлетворения пользователей, а все новые поля появляются стандартной ширины и в конце грида. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2004, 12:47
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
2Локшин Марк Мне не вполне понятен пункт №4. Как это планируется делать? 2Estets В данном случае требуется что-то между вашим вторым и третьим вариантом. При этом запуск DW builder'а, скажем, не одобрят. Про CR в данном контексте речь вообще не идёт. BTW, а почему DW в базе не храните? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2004, 13:33
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
Winnie-the-Pooh2Локшин Марк Мне не вполне понятен пункт №4. Как это планируется делать? Посмотрите на моем сайте lokshinmark.narod.ru . Обратить внимание на файл CPattern. Вместе с библиотечкой ExptHTML он решает проблему получения HTML версии отчета на основе DataWindow. Ну там обо всем написано и примеры есть, если кому интересно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2004, 14:46
|
|||
|---|---|---|---|
"Smart" datawindow |
|||
|
#18+
2Winnie-the-Pooh По поводу DWБилдера - часто возникают проблемы (у клиентов) типа поменялся телефон который необходимо печатать в шапке отчетов... и т.п. А по поводу хранения DW в базе есть несколько проблем например Скорость, мы работаем только с ханимками и блобы отпадают, а резать на куски и клеить на клиенте это долго. Обновление, выслать PBL с исправленными отчетами проще чем обновить данные в базе. Изменение, для исправления необходимо выкачать из базы DW на клиента исправить его и закачать обратно Композитные DW ну и всякие DDDW, может вопрос динамического поднятия синтаксиса и решается, но я например не знаю как ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2004, 15:20
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
2Локшин Марк Спасибо. Я так и думал, что это предполагает использование вашей библиотеки. А с сайтом вашим знаком, как и все на этом форуме, ИМХО. 2DIGITALPRO Спасибо, не придётся вспоминать синтакисис. 2Estets Спасибо, теперь ваша позиция вполне понятна. Действительно, для поставок множеству клиентов (и, например, для версионного хранения) PBL удобнее строки / строк в базе, не говоря уже о композитах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2004, 15:53
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
Так как насчет моей идеи? По-моему выглядит достаточно заманчиво? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2004, 21:13
|
|||
|---|---|---|---|
"Smart" datawindow |
|||
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.08.2004, 10:42
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
2QueryMan Я понял, что вы пишете по-английски из-за отсутствия драйвера через несколько минут после отправки сообщения... В моём случае возможны оба варианта - на одной машине разные юзеры и юзер, сбежавший на чужую машину. Не самый вероятный, но вполне возможный 'scenario', как вы и пишете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2004, 21:05
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
Локшин МаркТак как насчет моей идеи? По-моему выглядит достаточно заманчиво? Извините за нескорый ответ, - в частности хотелось окончательно определиться. Отвечу так - идея класная, но в первой (пилотной) версии "мы пойдем другим путём" ©Вовчик Симбирский. С вашего разрешения, по мере перехода к второй (боевой) версии я обращусь к Вам за более подробными разъяснениями. Regards, Pooh. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.09.2004, 13:38
|
|||
|---|---|---|---|
"Smart" datawindow |
|||
|
#18+
Здравствуйте все - разрешите представиться. У меня была похожая задача - "генератор отчетов". Кастомизация настроек - только подмножество этой штуки. Суть - "syntax of dw" вместе с некоторыми специальными параметрами хранится в отдельном файле - шаблоне . Шаблон может храниться на локале и/или в сети - при вызове выдается ввиде Tree - выбирай . Имеется сервис - что-то типа небольшого painter-а - не очень мощного , но состав , положение и размер колонок , фильтры , сортировки и группировки можно менять . Еще - можно вставлять дополнительные computed колонки и редактировать еукстовые . Имеется небольшое разделение доступа на право пользования и корректировки . Для юзеров программистом готовится "базовый шаблон" - а юзерам предоставляется право копировать его и "измываться" над ним как угодно. - Дальше все просто - подгрузка в пустой dw и retrieve. После этого (Runtime) - можно менять состав видимых колонок и сортировки. Весь сервис сделан на обьекте , содержащем подробно распарсенный синтаксис datawindow . Побочно - 1) на основе распарсенной информации - экспорт в Excel - почти WYSIWYG. 2) любой отчет как таковой поставляется в виде шаблона - внутри там есть и подготовленный SQL запрос и его вид. Перекомпиляция проекта не нужна - обмен шаблонами по e-mail , скорость исполнения требований - до 1 часа . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.09.2004, 17:02
|
|||
|---|---|---|---|
|
|||
"Smart" datawindow |
|||
|
#18+
ZhVПобочно - 1) на основе распарсенной информации - экспорт в Excel - почти WYSIWYG. Спасибо за ответ. А можно с этого места поподробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.09.2004, 23:50
|
|||
|---|---|---|---|
"Smart" datawindow |
|||
|
#18+
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) Поэтому не буду портить чужую коммерцию - код выкладывать не буду , уж извините. К тому же работа оплачена заказчиком и мне как бы не принадлежит . А еще - довольно много пота :-) Также я думаю , что без большой нужды лучше не париться - по ходу очень много скрытых и тонких граблей - лучше купить у этих парней готовое . А для кастомизации - вполне достаточно просто сделать нечто аналогичное сервису по обработке обьекта - распарсенного синтаксиса - из первой части моего предыдущего поста (до слова - "побочно"). Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=15&mobile=1&tid=1338908]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 144ms |

| 0 / 0 |

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