Power Builder - Error update DATASTORE

   
Vista:

Error update DATASTORE

Publicado por Franjo (12 intervenciones) el 15/07/2009 16:32:03
Estoy importando unos ficheros de texto y uso una serie de datastore para el proceso de importación de datos.

Uno de los datastore tiene unos campos fecha.

Decir que la base de datos es Oracle, y el powerbuilder que uso es el 5 (ya se un poco desfasado)

La operación realiza una serie de insertrow , y setitem en las datastore. Concretamente para este datastore con campos fecha, realizo setitem de las filas que toquen.

Al hacer el update de la datastore me da un error.

El Error es el siguiente : 1843 "ORA-01843: not a valid month

Y la operación que realiza, el sqlerrtext del evento dberror, del datastore es la siguiente:

UPDATE "SCDTEXP"
SET "SCD_EXP_IAUTO" = 17137.54,
"SCD_EXP_IDISP" = 17137.54,
"SCD_EXP_IEXEC" = 17137.54,
"SCD_EXP_IPAGA" = 17137.54,
"SCD_EXP_ICOFI" = 0.00,
"SCD_EXP_ILICI" = 17137.54,
"SCD_EXP_IADJ" = 17137.54,
"SCD_EXP_DINIP" = NULL,
"SCD_EXP_DINIR" = NULL,
"SCD_EXP_DFINP" = NULL,
"SCD_EXP_DFINR" = NULL,
"SCD_EXP_DLICI" = NULL,
"SCD_EXP_DADJU" = TO_DATE('1-Jan-2000 00:00:00','DD-MON-YYYY HH24:MI:SS'),
"SCD_EXP_NIFADJU" = ' ',
"SCD_EXP_NOMADJU" = ' ',
"SCD_EXP_ESTAT" = '30'
WHERE "SCD_EXP_ACT" = '007996' AND
"SCD_EXP_EXP" = '0001'

Por que me hace el To_date con el formate DD-MON-YYYY ??

Esta sentencia la pruebo con el TOAD, en el oracle directamente y peta, sin embargo si sustituyo el To_date por este otro TO_DATE('01-01-2000 00:00:00','DD-MM-YYYY HH24:MI:SS') funciona bien la sentencia UPDATE.

Decir que los campos fecha en el datastore, los he probado que los formatee a dd/mm/yyyy , por que solo trato la fecha y no la hora, los campos que hacia el setitem eran date. Y tambien estoy probando hacer en format de campo fecha del datastore a dd/mm/yyyy hh:mm:ss, y por tanto campos datetime en el setitem.

Ademas al hacer la conexion de base de datos con el oracle en el powerbuilder hago esta otra operación

string sql = "ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY HH24:MI:SS'"
EXECUTE IMMEDIATE :sql USING atr_object;

Al principio estaba como solo como DD-MM-YYYY pero bueno la cambiado a que tambien tenga hora.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error update DATASTORE

Publicado por miguel (1 intervención) el 21/07/2009 13:17:56
El problema es que el cliente oracle ha detectado que se trata del lenguaje español y con 'MON' espera 'Ene' en vez de 'Jan'. Difícil que la versión 5 de powerbuilder ( driver oracle O72) que usamos nos mande el mes en castellano.

string sql = "ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY HH24:MI:SS'"
EXECUTE IMMEDIATE :sql USING atr_object;

probablemente no ha funcionado porque sobran las comillas sencillas alrededor DD-MM-YYYY HH24:MI:SS
(no reconoce bien el formato y coje el por defecto?)

a nosotros nos funciona todo bien usando formato 'american' sin especificar :
-----------------------------------------------------------------------------------
ls_sql = 'ALTER SESSION SET NLS_DATE_LANGUAGE = AMERICAN'
EXECUTE IMMEDIATE :ls_sql USING atr_object;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar