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

Если вывести сообщение messagebox("",this.ReselectRow(Row)) то на экране видно как раз значение считаное в запросе, но после продолжения вновь возвращается нововведенное значение
...
Рейтинг: 0 / 0
ReselectRow
    #32538948
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобще не красиво или даже запрещено делать такие вещи в событии 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
ReselectRow
    #32539146
ЧК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь!
Будем поднимать свой уровень.
...
Рейтинг: 0 / 0
ReselectRow
    #32540619
Centner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем не устраивает:
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
ReselectRow
    #32541050
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
ReselectRow
    #32541591
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ЗоринАндрей
Согласен с Вами. Возможно, в Вашем случае так оно и будет (c POST Event).
Вобще я обычно пользуюсь кодами возврата ItemError-a, а Post Event был предложен как вариант для случая, если сложно перевести уже написанный код на вариант с ItemError.
...
Рейтинг: 0 / 0
ReselectRow
    #32543009
Centner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрейэто часом не СТЗ ?
Я, я, натюрлихь! (Он родимый.)
Я так понял, что Санкт-Петербург это что-то вроде "Поликома"?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / ReselectRow
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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