Гость
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / шаблон формата даты / 10 сообщений из 10, страница 1 из 1
19.01.2010, 16:12
    #36418456
psevdo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шаблон формата даты
Здравствуйте. У меня сложилась такая ситуация. Есть дата пикер:
1) Display as - Date Picker (DD.MM.YYYY HH24:MI)
2) Source type - Database column
3) Default - to_char(sysdate,'dd.mm.rrrr hh24:mi')


Проблема в том, что когда в дата пикере убираешь время, то запись инсертится нормально, но если время оставляешь ошибка:

ORA-01830: шаблон формата даты завершается перед преобразованием всей строки ввода
Error ERR-1021 Unable to run "function body returning boolean" validation.
...
Рейтинг: 0 / 0
19.01.2010, 19:39
    #36419009
ossv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шаблон формата даты
psevdo,

посмотрите какой шаблон стоит в Вашем validation, который типа "function body returning boolean".
...
Рейтинг: 0 / 0
20.01.2010, 09:36
    #36419582
psevdo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шаблон формата даты
Дело в том,что в валидатионе никакие шаблоны не указываются.. Там просто нет такой возможности.. Вызывается просто функция, и даты там просто сравниваются и никакие манипуляции с ними не делаются. Вот код функции:

CREATE OR REPLACE function date_test (
p_user_id in number,
p_date_from in date,
p_date_to in date default to_date('01.01.2000'))
return boolean is

v_Max_open_date date; -- максимальная дата из истории (нзначение лидера)
v_Max_close_date date; -- максимальная дата из истории (отмена лидера)

begin

-- Если назначается новый лидер
if p_date_to = to_date('01.01.2000') then
null;
select max(hist_to) into v_Max_close_date
from ag_t_group_leader
where user_id=p_user_id;

if p_date_from > v_Max_close_date then
-- dbms_output.put_line('дата утверждения подходит');
return true;
else
--dbms_output.put_line('дата утверждения не подходит');
return false;
end if;

-- Если отменяется лидер
else
null;
select max(hist_from) into v_Max_open_date
from ag_t_group_leader
where user_id=p_user_id;

if p_date_to > v_Max_open_date then
-- dbms_output.put_line('дата отмены подходит');
return true;
else
-- dbms_output.put_line('дата отмены не подходит');
return false;
end if;
end if;
end;
...
Рейтинг: 0 / 0
20.01.2010, 11:16
    #36419878
ossv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шаблон формата даты
psevdo,

проверьте Формат Даты используемый по умолчанию в Вашем приложении.
Shared Components -> Edit Globalization Attributes -> Application Date Format.
Я предполагаю, что он отличается от 'DD.MM.YYYY', и выражение to_date('01.01.2000') смысла не имеет. Чтобы не зависеть от принятого по умолчанию формата даты есть смысл поменять везде to_date('01.01.2000') на to_date('01.01.2000', 'DD.MM.YYYY').
...
Рейтинг: 0 / 0
20.01.2010, 11:29
    #36419932
ossv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шаблон формата даты
В догонку,
Если Ваш Application Date Format 'DD.MM.YYYY', то вероятно ошибка вызвана неявным пребразованием строки в дату при вызове функции и нужно сделать явное пребразование to_date(xxx, 'DD.MM.YYYY HH24:MI').
...
Рейтинг: 0 / 0
29.01.2010, 18:26
    #36439493
darimel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шаблон формата даты
Здравствуйте, помогите пожалуйста.

У меня на форме есть Date Picker (DD.MM.YYYY)
я сделала валидатор на формат ввода даты
но если я в поле ввожу текст, до валидатора дело не доходит, сразу вылетает ошибка

"ORA-01858: a non-numeric character was found where a numeric was expected
Error ERR-1024 Unable to run "function body returning text" validation.
OK "

Кто-нибудь сталкивался с такой проблемой?
...
Рейтинг: 0 / 0
29.01.2010, 18:31
    #36439499
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шаблон формата даты
darimel,

приведите здесь PL/SQL-код Вашего валидатора.
...
Рейтинг: 0 / 0
29.01.2010, 18:40
    #36439512
darimel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шаблон формата даты
declare
t number;
begin
select nvl((select 1
from dual
where REGEXP_LIKE(:P34_BUYING_DATE,
'^\d{2}\.\d{2}\.\d{4}$')),
0)
into t
from dual;

if t = 0 then
return 'Формат даты неверный.';
else
return null;
end if;


end;
...
Рейтинг: 0 / 0
29.01.2010, 19:01
    #36439541
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шаблон формата даты
darimel,

0. Validations бывают разных типов, один из них - Regular Expression. Для такого типа проверки Вы можете сразу ввести регулярное выражение, с которым будет сравниваться значение в элементе, без всяких злоупотреблений блоками.
1. Для подобных проверок лучше использовать функцию IsDateValid и PL/SQL Expression:
Код: plaintext
IsDateValid(:P34_BUYING_DATE, \'DD.MM.YYYY\')= 1 
...
Рейтинг: 0 / 0
01.02.2010, 11:26
    #36441697
darimel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
шаблон формата даты
Получилось! Спасибо :)
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / шаблон формата даты / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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