powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как изменить retrieve аргументы DW
20 сообщений из 20, страница 1 из 1
Как изменить retrieve аргументы DW
    #32222388
Фотография DenisVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня такой вопрос, может он покажется глупым, но все-таки...
Есть какой нибудь способ изменить retrieve аргументы DW без вызова функции retrieve? (например данные в DW я могу подменить через Object.Data)
Или вообще никак этого сделать нельзя?
Заранее спасибо за ответы.
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32222445
Механик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никогда не сталкивался с такой необходимостью, разве что агрументы для оформления DW... Собственно для этого или для чего?
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32222596
Фотография DenisVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще мне надо для того чтобы я имею отретривленное DW, например в представлении grid. Я меняю DataObject на DW в другом представлении, например freeform. Данные передаю через Object.Data, а как передать ретрив аргументы без использования функции retrieve() я не знаю, а в окне эти аргументы используются, например в вычисляемых полях. Я конечно могу вызвать retrieve() и на событие retrievestart убить ретрив, но зачем это?
И если так делать начинается гиморой со статусами записей.
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32222676
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача, мне кажется, не совсем стандартная. Я точно не знаю, но может быть следует посмотреть через Browser на Properties DataWindow. Вот я глянул, может эти можно как-то использовать:
d_data.help.typeid.retrieve.argument
d_data.table.arguments
d_data.table.sqlselect

Погляди, может сам чего накопаешь?
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32222825
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю надо подумать над использованием функции ShareData()
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32222836
Фотография DenisVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я внимательно посмотрел еще раз свойства DW, но ничего там не нашел насчет значений ретрив аргументов. Как пример datawindow.table.arguments - возврашает строку содержащую название_ретрив_аргумента и тип_ретрив_аргумента и т.д. И все остальные свойства, все что угодно, но не то что мне надо.
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32222853
Фотография DenisVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет ShareDate, это все конечно прекрасно, я тоже над этим задумываля, но для этого надо, как минимум, иметь еще одно DW (чтобы расшаривать данные), а у меня все происходит в одном. Так же я пробовал использовать GetFullState и SetFullState для смены DW, но тут происходит такая фигня, что он !!! представление сменить не может!!!, хотя возвращает 1, т.е. все ok.
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32222918
conrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что мешает добавить поля и запихивать в них значения аргументов?
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32222949
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DenisVK
Насчет ShareDate, это все конечно прекрасно, я тоже над этим задумываля, но для этого надо, как минимум, иметь еще одно DW (чтобы расшаривать данные)
Можно получать данные в DataStore, потом шарить на него Ваши DataWindow.
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32222955
Фотография DenisVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет, чтобы запихать их как поля, я и об этом думал и рассматриваю его как вариант вместе со всем выше перечисленным, но все-таки хочется достучаться напрямую к этим ретрив аргументам, может есть еще методы?
Пишите все, расмотрю все варианты. Да и спасибо за ответы.
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32222960
Фотография DenisVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS
Можно получать данные в DataStore, потом шарить на него Ваши DataWindow.

Но в данном случает, т.к. DataStore всетаки невизуальный объект, простой вопрос как я смогу отобразить эти данные взамен моего DW?
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32222979
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно получать данные в DataStore, потом шарить на него Ваши DataWindow.

Это не поможет в решении поставленной проблемы, retrieval arguments не сидят в datawindow buffer, посему share их не принесёт и computed columns не пересчитаются...

Если в оригинальном (grid) dataobjecte в detail band поместить computes, которые приравнять к retrieval arguments, то будет доступ к ним через GetItemxxx, но большого толку от этого нет, так как они всё равно через Object.Data не приедут - их нужно будет ручками куда-то пихать. Запихать их можно только в реальные колонки, чтобы в последствии computes, которые на эти реальные колонки смотрят, пересчитались. Это значит, что нужно изменять column list freeform datawindow. Но тогда будет column list mismatch, и скорее всего Object.Data assignment перестанет работать.
Если не менять дизайн, наиболее переспективным (хотя и не факт, что работать будет), мне кажется подход с Retrievestart event, который автор просто не довёл до конца...
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32223107
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда - насчет DataStore я не подумавши сказал :)

А если в computed field ссылаться не на параметры, а на собственную глобальную функцию, которая по имени параметров возвращает их значения ?

По идее тогда можно было бы для стандартизации сего процесса написать сервис по аналогу сервисов PFC, который на событие DataWindow RetrieveEnd считывает значения параметров в глобальный класс коллекцию параметров, хранящихся раздельно по каждому DataWindow, Тогда глобальная функция спокойно может по 2 параметрам DataWindowName и ParamName возвращать значение параметра. На Destroy DataWindow можно прицепить удаление списка значений его параметров из глобальной коллекции параметров. В принципе делов то на десяток другой строк, зато готовое решение.

P.S. Сильно не пинать если я предложил не сильно хорошее решение - я еще не волшебник, я только учусь :) Сложно все таки отвыкнуть рассуждать по Дельфийски, лучше послушаю, что спецы скажут, может решение попроще есть :) Если же нет, мне недолго такой сервис накатать - во всяком случае класс коллекцию, хранящего значения именованных параметров я сразу для PB накатал, как только его стал учить - а то неудобно было параметры по ссылке в форму передавать, не лепить же в самом деле из за этого в библиотеках структуры и обьекты :)
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32223127
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того, чтобы попробовать найти "решение попроще", надо понять
1) изначальную мотивацию упражнения:
retrieval into grid -> смена dataobject на feeform -> перекачка данных...
2) что именно ты собрался считать с помощью computes на клиенте (может лучше на БД посчитать), да ещё и после таких исхищрений как 1), базируясь на retrieval arguments
3) какова отдача от такого сервиса, как ты собрался написать. IMHO, кроме учебной (лично для тебя) - нулевая.

Ну и ваще, как у нас тут говорят, надо принцип KISS уважать...
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32223247
Фотография DenisVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо за Ваши ответы. Очень рад, что открылся наконец такой форум, соответсвенно отдельное спасибо организатором сего.
Подведу, так сказать резюме:
1. Все из выше перечисленного, к моему глубокому сожедению я и так знал. Но!!! Все равно огромное спасибо за Ваши ответы.
2. Решение этой проблемы соответсвенно 4, каждый имеет свои плюсы и минусы (вдоваться в подробности не буду):
а. Вообще отказаться от ретрив аргументов (в некоторых случаях это возможно, в некоторых получаем определенный гиморой).
б. Выкинуть ретрив аргументы в select.
в. Использовать ShareDate с двумя DW и соответсвенно отображать, то одно то другое.
г. С чего я и начал впринципе писать использовать функцию retrieve() и на событие retrievestart отрубать ретрив ~ return 1.
На этом, думую, обсуждать эту тему не имеет дальнейшего смысла. !!!НО!!! Если есть еще какое-то другое (само-собой разумное) решение, большая просьба написать мне на мыло или оставить сообщение.
Да тут у меня еще совершенно отдельный вопрос:
Кто нибудь имел дело с тех.потдержкой по PB у Sybase? Ваше мнение? И есть ли там нормальные специалисты по РВ. Выскажусь сам, от одного такого специалиста вся моя бывшая контора была в шоке.
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32223535
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филипп
Такой сервис как раз позволит вычисляемым полям, ссылающимся на Retrieve Arguments спокойненько работать в зашаренных DataWindow, так как Вы же сами написали, что при зашаривании аргументы не видны. Фактически он позволит в DataWindow видеть и использовать в вычислямых полях любые установленные в приложении параметры. По моему это гораздо логичнее для текущей задачи, чем прерывать считывание на RetrieveStart (грозит сброс буферов) или впихивать эти аргументы в поля набора данных, таким образом зазря тратя память. Плюс сервис может обеспечить изменение и в том числе динамическое параметров, что тоже может пригодиться. По моему все просто и логично (во всяком случае для меня). Обьясните плиз недостатки такого подхода, надо же разобраться как программисты PB мыслят, чтобы разрабатывать "совместимые" с ними решения :)
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32223565
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще можна попробовать вариант из функциями
Describe(), Modify(), Evalution()
чтоб поработать с вычисляемыми полями для изменения их выражения (вместо аргумента поставить его новое значение)
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32223645
Dmitry Belousov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DenisVK писал:Кто нибудь имел дело с тех.потдержкой по PB у Sybase?

Был у них на семинаре по PB+ASA. Не знаю, те же люди осуществляют сапорт или нет, но впечатление, в целом благоприятное. Полученных на семинаре знаний хватило моему бывшему коллеге чтобы развернуть Jaguar у себя в инвестбанке.
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32223756
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое элегантное и удачное решение данной проблемы я считаю предложил Микола :) Действительно, что мешает через Modify изменять значения вычисляемых полей на нужные.
...
Рейтинг: 0 / 0
Как изменить retrieve аргументы DW
    #32223941
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как изменить retrive аргументы втихушку не знаю, но получить их текущее значение можно так:
Код: plaintext
ls_arg = dw_1.Describe( "evaluate('a_cardid',0 )").


Где a_cardid - собственно имя retrieve аргумента.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как изменить retrieve аргументы DW
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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