Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
arkazar Участник со стажем
Вступление в Клуб: 27.09.2010
|
Вт Апр 03, 2012 13:23  Почему не меняет дату в поле? |
|
Полезность: Нет оценки
|
Добрый день!
Не могу разобраться. Дело практически полтергейст.
У меня есть операция расширение другой операции. В частности откат пролонгации в сейфовых ячейках.
Так вот в конце операции я присваиваю договору сейфовых ячеек дату окончания. Но она не меняется всё равно.
Если выводить через stdio.put_line_buf то перед концом операции выводит правильное значение ячейки. Но в самой ячейке значение не меняется. Как такое может быть? Я не запускаю основную операцию избегая её exception.
Код: | x:='aaa';
to_number(x);
&BASE$SETVARS;
&BASE$VALIDATE;
&BASE$GETVARS;
exception when others then
null; |
|
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Вт Апр 03, 2012 13:26  Re: Почему не меняет дату в поле? |
|
Полезность: Нет оценки
|
arkazar пишет: | Добрый день!
Не могу разобраться. Дело практически полтергейст.
У меня есть операция расширение другой операции. В частности откат пролонгации в сейфовых ячейках.
Так вот в конце операции я присваиваю договору сейфовых ячеек дату окончания. Но она не меняется всё равно.
Если выводить через stdio.put_line_buf то перед концом операции выводит правильное значение ячейки. Но в самой ячейке значение не меняется. Как такое может быть? Я не запускаю основную операцию избегая её exception.
Код: | x:='aaa';
to_number(x);
&BASE$SETVARS;
&BASE$VALIDATE;
&BASE$GETVARS;
exception when others then
null; |
|
возможно возникает исключение.
А у вас ниже описан перехват всех исключений и при этом, судя по коду, система ни каких действий не предпринимает.
уберите перехват экпшена и увидите где именно проблема.
и кстати, каким образом 'aaa' будет преобразовано в число?
вот Вм ваш эксепшен.. в результате макрос не работает _________________ всегда есть как минимум 2 выхода |
|
 |
arkazar Участник со стажем
Вступление в Клуб: 27.09.2010
|
Вт Апр 03, 2012 13:38   |
|
Полезность: Нет оценки
|
Да, оно и должно возникать. Выше написан код который должен быть вместо основной операции. А exception позволяет не выполнять основную операцию.
Вот...
Код: | stdio.put_line_buf('Устанавливаем дату окончания действия договора: '||to_char(new_end_date, 'DD/MM/YY'));
[DATE_ENDING]:= new_end_date;
stdio.put_line_buf('Удаляем пролонгацию.');
prol.[DELETE#AUTO];
x:='aaa';
to_number(x);
&BASE$SETVARS;
&BASE$EXECUTE;
exception when no_data_found then
stdio.put_line_buf('не нашёл');
when others then
null;
end;
|
|
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Вт Апр 03, 2012 13:48   |
|
Полезность: Нет оценки
|
arkazar пишет: | Да, оно и должно возникать. Выше написан код который должен быть вместо основной операции. А exception позволяет не выполнять основную операцию.
Вот...
Код: | stdio.put_line_buf('Устанавливаем дату окончания действия договора: '||to_char(new_end_date, 'DD/MM/YY'));
[DATE_ENDING]:= new_end_date;
stdio.put_line_buf('Удаляем пролонгацию.');
prol.[DELETE#AUTO];
x:='aaa';
to_number(x);
&BASE$SETVARS;
&BASE$EXECUTE;
exception when no_data_found then
stdio.put_line_buf('не нашёл');
when others then
null;
end;
|
|
странно.. в вопросе был код из секции проверки.. счас приводите текст из секции тело)) ну да ладно.
В пакете что написано? операция простая или групповая? _________________ всегда есть как минимум 2 выхода |
|
 |
arkazar Участник со стажем
Вступление в Клуб: 27.09.2010
|
Вт Апр 03, 2012 13:50   |
|
Полезность: Нет оценки
|
Операция простая. |
|
 |
arkazar Участник со стажем
Вступление в Клуб: 27.09.2010
|
Вт Апр 03, 2012 14:02   |
|
Полезность: Нет оценки
|
Выход нашёлся.
Код: | stdio.put_line_buf('Устанавливаем дату окончания действия договора: '||to_char(new_end_date, 'DD/MM/YY'));
[DATE_ENDING]:= new_end_date;
stdio.put_line_buf('Удаляем пролонгацию.');
prol.[DELETE#AUTO];
x:='aaa';
to_number(x);
&BASE$SETVARS;
&BASE$EXECUTE;
this.[DATE_ENDING]:= new_end_date;
exception when no_data_found then
stdio.put_line_buf('не нашёл');
when others then
null;
end; |
|
|
 |
|