Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / ReselectRow / 7 сообщений из 7, страница 1 из 1
28.05.2004, 11:34
    #32538353
ЧК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ReselectRow
В событии itemchanged
проверяю подходит ли значение по заданым параметрам если да сохраняю, если нет то хочу возвратить назад старое значение ReselectRow (возвращает 1), но после этого все равно в поля возвращается введенное значение, а не считаное в запросе.

Если вывести сообщение messagebox("",this.ReselectRow(Row)) то на экране видно как раз значение считаное в запросе, но после продолжения вновь возвращается нововведенное значение
...
Рейтинг: 0 / 0
28.05.2004, 14:40
    #32538948
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ReselectRow
Вобще не красиво или даже запрещено делать такие вещи в событии ItemChanged, т.к. поля принимают значения опосля его выполнения.
Исходя из этого все операции по откату надо делать или методом POST или с помощью кодов возврата данного события (см. хелп по этому событию).

Для отката всей строки я бы создал UserEvent для текущего DW например ue_rollbackrow(row)
[Script]
this.object.data.primary.current[row] = this.object.data.primary.original[row]
this.setitemstatus( row,0,notmodified!) // это на всякий случай
return

В событии ItemChanged
[Script]
if not <условие> then
this.post event ue_rollbackrow(row)
return 0
end if
return 0
...
Рейтинг: 0 / 0
28.05.2004, 15:47
    #32539146
ЧК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ReselectRow
Спасибо за помощь!
Будем поднимать свой уровень.
...
Рейтинг: 0 / 0
31.05.2004, 11:07
    #32540619
Centner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ReselectRow
А чем не устраивает:
F1(Help), ItemChangedItemChanged event: syntax 1
...
Return code choices (specify in a RETURN statement):
0 (Default) Accept the data value
1 Reject the data value and don't allow focus to change
2 Reject the data value but allow the focus to change

Или я чего-то не понял?
...
Рейтинг: 0 / 0
31.05.2004, 14:25
    #32541050
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ReselectRow
2 PaulJB
Хуже другое. Постить событие из itemchanged с целью внесения каких-либо изменений может привести к сохранению некорректных значений.
Например:
позьзователь ввел значение и не переходя на другое поле тут же нажал кнопку ну например Save.
пошел выполняться Clicked кнопки.
Вызываем перед сохранением AcceptText
что приводит к срабатыванию itemchanged.
Из itemchanged постится event.
он встает в очередь и будет выполнен после отработки clicked, так?
т.е. мы продолжаем процесс сохранения со старыми данными, а потом вызывается ваш ue_rollbackrow.
Или у Вас там где-то между AcceptText и Update стоит что-то типа
Код: plaintext
1.
2.
DO WHILE Yield()
LOOP
???

2 ЧК
Для возвращения старого значения ReselectRow использовать не надо, тут PaulJB прав - значение в буфере Original - оттуда его и надо брать если конечно нужно вернуть именно изначальное значение прочитанное из базы.
Но выставить его следует обычным SetItem + Return 2 для отказа от значения введенного пользователем.

если нужно всего лишь отказаться от введенного значения то достаточно будет Return 2, и никаких SetItem(original) или того хуже ReselectRow.

2 Centner
Где-то рядом с Ё-бургом
это часом не СТЗ ?
...
Рейтинг: 0 / 0
31.05.2004, 18:32
    #32541591
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ReselectRow
2 ЗоринАндрей
Согласен с Вами. Возможно, в Вашем случае так оно и будет (c POST Event).
Вобще я обычно пользуюсь кодами возврата ItemError-a, а Post Event был предложен как вариант для случая, если сложно перевести уже написанный код на вариант с ItemError.
...
Рейтинг: 0 / 0
01.06.2004, 15:21
    #32543009
Centner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ReselectRow
ЗоринАндрейэто часом не СТЗ ?
Я, я, натюрлихь! (Он родимый.)
Я так понял, что Санкт-Петербург это что-то вроде "Поликома"?
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / ReselectRow / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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