powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Связь полей в DW
12 сообщений из 12, страница 1 из 1
Связь полей в DW
    #32667539
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе времечко! Подскажите, люди умные, как мне синхронизировать некое поле в DW с Display Column из некоего DDDW. Т.е. юзер давит на столбец с DDDW, выбирает там что-то, а соответствующее значение Display Column появляется также в другом столбце. В каком событии это скриптать и какой синтаксис доступа к данным в DDDW? HELP!!!
...
Рейтинг: 0 / 0
Связь полей в DW
    #32667602
Фотография Вовик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужно присвоить другому столбцу display-значение dddw , то
можно в событии itemchanged :

1) получить display - значение dddw
2) присвоить его другому столбцу


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
string ls_display
if (dwo.name = 'имя_dddw_колонки') and (row >  0 ) then
    ls_display = describe &
      ( "evaluate ( 'LookupDisplay ( имя_dddw_колонки )', " &
         + string ( GetRow() ) " )" )
   post SetItem( GetRow() , имя_второй_колонки , ls_display )
end if 
...
Рейтинг: 0 / 0
Связь полей в DW
    #32667682
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за отзыв! Только у меня Describe возвращает пустую строку. Пишу
Код: plaintext
1.
2.
ls_display = describe &
      ( "evaluate ( 'LookupDisplay ( contr_key )', " &
         + string ( GetRow() )+ " )" )
...
Рейтинг: 0 / 0
Связь полей в DW
    #32667713
f45f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверь что возвращает LookUpDisplay не используя describe

Код: plaintext
1.
string s
s=dw_1.LookUpDisplay(contr_key)
...
Рейтинг: 0 / 0
Связь полей в DW
    #32667745
Фотография Вовик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнение :

скорее всего нужно весь предложенный скрипт исполнять не напрямую
в событии itemchanged , а создать новое событие ,
типа ue_post_itemchanged с аргументами ( long ll_row , string ls_col )
и в этом событии поместить весь предложенный скрипт.

а в itemchanged написать постированный вызов этого события , что-то типа :
post ue_postitemchanged (....)

Тк в момент itemchanged еще не произошло переприсвоение исходного поля
...
Рейтинг: 0 / 0
Связь полей в DW
    #32667755
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одном Вовик правТк в момент itemchanged еще не произошло переприсвоение исходного поля
В остальном - никому не нужно никаких постированных вызовов.
Надо просто вместо попыток использования конструкции "evaluate ( 'LookupDisplay ...)" сделать find в некоем DDDW ...
...
Рейтинг: 0 / 0
Связь полей в DW
    #32667839
Kr_Yury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппНадо просто вместо попыток использования конструкции "evaluate ( 'LookupDisplay ...)" сделать find в некоем DDDW ...
Во многих примерах, в т.ч. на sybase.com приводятся примеры с использованием LookupDisplay. Возможно в ранних версиях PB другого решения не было. В PB 8.0 у меня следующее решение.
1) find в DDDW используется, только если DW не редактировалось (в этом случае текущей строкой в dddw будет первая)
2) если редактировалось, то просто в событии itemchanged обращаемся к нужному полю dddw в текущей строке:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Фрагмент кода:

event open
long ll_gr, ll_row
dw_1.GetChild('gr_poruch', idwc_div)
idwc_div.SetTransObject(sqlca)
idwc_div.Retrieve()

dw_1.SetTransObject(sqlca)
dw_1.Retrieve()

ll_gr = dw_1.Object.gr_poruch[1]
ll_row = idwc_div.Find("num="+String(ll_gr),1, idwc_div.RowCount())
idwc_div.ScrollToRow(ll_row)
il_div = idwc_div.GetItemNumber( ll_row, "div_tx" ) // до редактирования
...
end event

type dw_1 from datawindow 
end type
event itemchanged
long ll_row
ll_row = idwc_div.GetRow()
il_div = idwc_div.GetItemNumber( ll_row, "div_tx" )
...
end event
Вместо GetItemNumber может стоять GetItemDate, GetItemString в зависимости от типа значения.
...
Рейтинг: 0 / 0
Связь полей в DW
    #32667857
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LevonДоброе времечко! Подскажите, люди умные, как мне синхронизировать некое поле в DW с Display Column из некоего DDDW. Т.е. юзер давит на столбец с DDDW, выбирает там что-то, а соответствующее значение Display Column появляется также в другом столбце. В каком событии это скриптать и какой синтаксис доступа к данным в DDDW? HELP!!!А нельзя "некое поле в DW" заменить на вычисляемое?
...
Рейтинг: 0 / 0
Связь полей в DW
    #32667859
Kr_Yury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одно уточнение. В качестве "div_tx" может быть как displaycolumn так и datacolumn и любое др. поле таблицы-источника для dddw.
...
Рейтинг: 0 / 0
Связь полей в DW
    #32667874
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kr_YuryВо многих примерах, в т.ч. на sybase.com приводятся примеры с использованием LookupDisplay. Возможно в ранних версиях PB другого решения не было
Эти многие примеры - НЕ для Iemchanged eventа
...
Рейтинг: 0 / 0
Связь полей в DW
    #32668206
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное всем спасибище! Разобрался, победил!
...
Рейтинг: 0 / 0
Связь полей в DW
    #32668371
Фотография Вовик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Levon
Какое решение в итоге применил?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Связь полей в DW
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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