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.
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


0