powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / использование процедуры copy для дат (oracle forms)
25 сообщений из 27, страница 1 из 2
использование процедуры copy для дат (oracle forms)
    #35729244
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, помогите, пожалуйста, разобраться в следующем:
хочу скопировать из переменной типа date, в переменную типа date(имя, которой формируется динамически), с использованием функции copy, т.е.
Copy(client_registry_date, 'docum.gr'||type_colum);
проблема в том, что копируется в переменную 'docum.gr'||type_colum дата в неверном формате.
Рассмотрим на примере, значение client_registry_date='12-НОЯ-02', а в переменную 'docum.gr'||type_colum(которая должна иметь формат 'ddmmyyyy') копирует '12110002'(т.е. год преобразует не правильно, вероятно из-за использования функции copy).
Подскажите, что нужно добавить, чтоб дата формировалась верно.
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35729648
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди, ну помогите!
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35729928
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Copy(to_char(client_registry_date,'DDMMYYYY'), 'docum.gr'||type_colum);

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35729956
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
'docum.gr'||type_colum - это поле типа DATE, если сделать как вы пишете, то при сохранении в бд выскакивает ошибка
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730011
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helen4это поле типа DATEПро to_date тоже не слышала?
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730019
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
слышала, если писать to_date(to_char(Copy(client_registry_date, 'docum.gr'||type_colum),'ddmmyyyy'),'ddmmyyyy'); , то возвращает дату не верно, например, если '12-НОЯ-2002', то возвращает 12110002
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730033
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вернее Copy(to_date(to_char(client_registry_date, 'docum.gr'||type_colum),'ddmmyyyy'),'ddmmyyyy');
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730141
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
helen4,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
declare
  dt date;
begin
dt:=sysdate;
copy(dt,':test.dat');
message(to_char(:test.dat,'dd.mm.yyyy'));
-- выдает 23.12.2008
end;
??????????????????
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730207
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне to_char использовать нельзя, т.к. поле в которое я копирую - типа date и при попытке сохранения выдается oracle-ошибка
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730216
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helen4слышала, если писать to_date(to_char(...,'ddmmyyyy'),'ddmmyyyy'); , то возвращает дату не верно, например, если '12-НОЯ-2002', то возвращает 12110002
А проверить не?
Этот звон совсем не оттуда ;)
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730225
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все оттуда, я ответ написала
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730299
Полночный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
helen4,

Да-да, проблема Y2K всплыла аж в 2008 году :) Судя по советам, все уже забыли, как ее решать :)

Установите BUILTIN_DATE_FORMAT с четырехзначным годом (либо RR, но лучше - YYYY). В зависимости от версии forms может понадобиться еще поменять DATE_FORMAT_COMPATIBILITY_MODE на 5.0.
Читайте help, там очень подробно все расписано, с примерами и рекомендациями. Начать можно прямо с орписания copy built-in, и дальше по ссылкам.
Если в приложении в целом используется "плохой" формат, то может понадобиться после выполнения copy поменять BUILTIN_DATE_FORMAT обратно, иначе собьется передача date-параметров между формами.
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730425
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
helen4мне to_char использовать нельзя
А где to_char ?
helen4при попытке сохранения выдается oracle-ошибка
Какая ? какой тип в БД и какой тип в блоке ? (скорее всего разный )
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730608
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Полночный, спасибо, но так тоже пробовала, но что-то не помогло, может я что-то не так делала, можите написать как вы это сделали бы.
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730622
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_mod,message(to_char(:test.dat,'dd.mm.yyyy'));-мне нельзя использовать to_char. И в форме, и в БД-тип date
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730701
Полночный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
helen4Полночный, спасибо, но так тоже пробовала, но что-то не помогло, может я что-то не так делала, можите написать как вы это сделали бы.
В первую очередь, я бы проверил значение исходной даты:
Код: plaintext
message (to_Char (Client_Registry_Date, 'dd.mm.yyyy'));
Вполне возможно, что "искалечена" уже Client_Registry_Date.
Потом
Код: plaintext
1.
2.
set_Application_Property (BUILTIN_DATE_FORMAT, 'dd.mm.yyyy');
set_Application_property (DATE_FORMAT_COMPATIBILITY_MODE, '5.0'); -- optional, может сработать и без.
В Вашем приложении BUILTIN_DATE_FORMAT и прочие свойства вообще устанавливаются централизованно? Обычно подобный код включается в библиотечную процедуру инициализации, вызываемую в каждой форме. Может, Вы просто забыли ее вызвать или не воспользовались шаблоном?
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730820
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
helen4_mod,message(to_char(:test.dat,'dd.mm.yyyy'));-мне нельзя использовать to_char. И в форме, и в БД-тип date
message(to_char(:test.dat,'dd.mm.yyyy')) - это просто пример вывода, вам это не надо.
Так какая ошибка при вставке ?
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35730850
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_мод,
возникает ошибка, сначала frm-40509 Ошибка ORACLE: не в состоянии обновить запись. потом
ORA-01483: неверная длина для переменных привязки типов DATE или NUMBER.
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35731560
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
helen4ORA-01483: неверная длина для переменных привязки типов DATE или NUMBER.
проверте все базовые поля блока и соответ. таблицы БД - дело не не в COPY
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35734188
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_мод, проверила типы совпадают...
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35734207
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
helen4_мод, проверила типы совпадают...
и длины тоже
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35734243
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_мод,да
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35734293
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helen4,

попробуйте так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare
	d date :=sysdate;
	p varchar2( 20 ) :='T.DAT';
begin
	set_Application_Property (PLSQL_DATE_FORMAT,'DD.MM.RRRR');
	copy(d,p);
	synchronize;
end;

.....
stax
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35734308
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helen4,

ой
set_Application_Property (PLSQL_DATE_FORMAT,'DD.MM.RRRR HH24:MI:SS' );

......
stax
...
Рейтинг: 0 / 0
использование процедуры copy для дат (oracle forms)
    #35734314
helen4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,
ОГРОМНОЕ СПАСИБО!!!! Помагло!
только скажите использование
set_Application_Property (PLSQL_DATE_FORMAT,'DD.MM.RRRR');
не повлияет на дальнейшую работу приложения или нужно вернуть исходный формат даты?
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / использование процедуры copy для дат (oracle forms)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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