Problemas con fecha nsl_date_format

Tengo un problema al guardar la información, y es algo así:
Cuando levanto mi sistema de personal en PB50 trato de grabar la fecha de nacimiento pero al grabar en lugar de grabar el año correcto 03/12/1992 (x ejm.) Graba 03/12/2092 a pesar de que el campo esta en formato 'DD/MM/YYYY' y en otros casos sale el siguiente error acá :
TO_DATE('3-Dec-92 00:00:00','DD-MON-YY HH24:MI:SS')
lo llevo aL PL/SQL y cambio el año a 4 digitos asi:
TO_DATE('3-Dec-1992 00:00:00','DD-MON-YYYY HH24:MI:SS')
y solo con esta manera graba.
================== Especificaciones =================
- No soy DBA de Oracle así que no cambiare el NLS_DATE_FORMAT(pero se puede alterar la session)
- Trabajo con Oracle 7.3.4 Client y Oracle 10.2 Data Base
- Desarrollo en Power Builder 5.0 de 32 Bits
- Escucho sugerencias y consultas para salir de este problemita.

5 Respuestas

Respuesta
1
Y disculpa la demora la verdad, en estos casos habeces es necesario modificar el nls_date_format
"NLS_DATE_FORMAT"="DD/MM/YYYY"
Bueno ahora que recuerdo puedes utilizar también u n formato de esta manera
to_date('03/12/1992','dd/mm/rrrr') intenta de esta manera el rrrr o rr abarca de forma global las fechas mientras que el yyyy no, también fíjate como es que mandas tu variable de fecha o de tu servidor
si crees que te ayude por favor cierra la pregunta, y si no me avisas
Use la el format to_date('03/12/1992','dd/mm/rrrr') en un sql incrustado en el botón update y funciono a la perfección.
No me queda más que decir. Gracias sos Grande...
Hasta la Próxima
Enrique desde Perú
Respuesta
1
Ummm power 5, es cierto podrian ser muchas cosas, descartemos.
El tema de la configuración regional.
El Formato de tu NLS (debería tener este valor SPANISH_SPAIN. WE8ISO8859P1)
Haz probado con el DbParm a la hora de conectarte así:
SQLCA.DBParm = "PBCatalogOwner='chspfar',Date=' ''''dd/mm/yyyy'''' '"
Cualquier cosa me avisas.
Suerte.
Mi pc tiene (AMERICAN_AMERICA.WE8ISO8859P1) porque la base de datos esta instalada y configurada así, probé con el dbparm pero igual sigue la falla.
Más datos...
desbloquie el campo (fec_nac)  de Update Proterties y en boton update coloque un
UPDATE PERSONAS SET LD_FEC_NAC = TO_DATE(LD_FECHA,'DD/MM/YYY') WHERE COD_PER = :LS_CODIGO;
Pero el resultado es el mismo, otro dato
Si ejecutas la ventana desde power(no desde la aplicación) haces el cambio de año y grbas funciona normal osea la falla esta cuando ejecutas o corres desde las fuentes e intentas cambiar fecha ahí esta el detalle... ¿desde el power con vista previa no ocurre eso raro no? ¿Sera la ventana?
Gracias por tu tiempo
¿Si entiendo el tema es con los ejecutables verdad? ¿No con power y las fuentes? Si es el primero parece que tus shared que estas usando en el donde esta tu ejecutable son diferentes a los shared que power esta leyendo porque no intentas pasar los runtime de tu power en donde no se cae a la ruta donde esta tu exe, por ahí que ahí algún driver que no esta igual al de tu power instalado.
Algo complicado el tema, la otra si es power5 de 32 porque no migras a 6.5 que es casi igual no usa tanta memoria como un 8 o 10.
De todas maneras seguiremos el caso hasta que funcuione ok.
Justo acabo de probar una excelente salida to_date('03/12/1992','dd/mm/rrrr') en mi botón update y me funciono a lo grande. Gracias pro el apoyo, he expandido mis conocimientos gracias a tu ayuda.
Hasta la próxima
Enrique desde Perú
Respuesta
1
Deberías informarme como estás realizando la inserción / actualización (ya sea con sql embebido, datawindow, etc.) para saber porqué te retorna el mensaje o te realiza la actualización incorrecta.
-se actualiza por el datawindow en update properties "dw_1.update()"
-el campo esta con las siguientes propiedades edit/style/editmask "DD/MM/YYYY" y format/format "DD/MM/YYYY"
-el NLS_DATE_FORMAT del servidor es "DD/MM/RR"
No debería haber inconveniente. Parece ser un problema más de configuración del cliente oracle que de powerbuilder.
Revisa la siguiente información, puede ser que encuentres algo que te ayude:
http://www.forosdelweb.com/f100/nls_date_format-permanente-403886/
Espero haberte sido de ayuda,
Atentamente., Franktwen.
P.D. Te recomiendo actualizarte los más pronto posible a Powerbuilder 9 o superior; la versión que usas ya no tiene soporte.
Respuesta
1
Espero que estés guardando la información en la base de datos a través de un datawindows re recomiendo que al crear el datawindows lo crees a través de odbc, conectando a una base de datos sql que esa tabla que contenga lo mismos campos que la tanla de oracle.
Así creas el datawindows tipo sql y en ya ejecutada tu aplicación conectada a oracle intenta grabar.
Programo en power builder pero he tenido la ocasión de hacerlo con oracle,
espero te sirva, tendré más noticias para ti
Respuesta
-1
Disculpa por la demora he estado alejado del foro, fíjate bien en el evento donde grabas quizás por ahí estas sumando o vuelve a crear ese campo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas