Progress - Actualizar registros

 
Vista:

Actualizar registros

Publicado por Andro33 (2 intervenciones) el 10/06/2008 18:46:41
El problema consiste en:
ingrese datos en un registro de una tabla. (en un programa de solicitudes), el programa debe dar la opcion de editar esos datos anteriormente ingresados, accesandolos por el numero de solicitud, efectivamente traigo los datos de esa solicitud, y los habilito de nuevo con un UPDATE, pero al momento de asignar de nuevo los nuevos valores, PROGRESS ignora el ASSIGN que hag para forzar esa actualizacion. que puedo hacer?

aca anexo el pedazo de codigo, gracias:

FIND tw_scso_mstr WHERE tw_scso_nro = wcSol AND tw_scso_enrt = NO AND tw_scso_dominio = "QAD". /*busca solicitud ingresada por usuario no enrutada*/

/*envia las variables de encabezado con valores que tenia segun en find*/
ASSIGN
wfFsol = tw_scso_fsol
wfFreq = tw_scso_freq
wcCc = tw_scso_cc
wcAl = tw_scso_al
wcDesc = tw_scso_desc.*/
/*wlEnruta = tw_scso_enrt.*/


twetiq2: /*esta etiqueta para q siempre evalue en el frame "encabezado" en caso de ingresos erroneos*/
do on error undo, leave:
/* UPDATE tw_scso_fsol tw_scso_freq tw_scso_cc tw_scso_al tw_scso_desc WITH FRAME b. */
UPDATE wfFsol wfFreq wcCc wcAl wcDesc WITH FRAME b. /* ingreso de datos encabezado en el frame b*/

/*validaciones pertinentes antes de continuar editando la solicitud "encabezado" */
IF tw_scso_fsol <> wfFsol THEN DO:
IF wfFsol < TODAY THEN
/*MESSAGE "Fecha Solicitud debe ser mayor o igual a hoy".*/
MESSAGE "Fecha debe ser mayor o igual a hoy" VIEW-AS ALERT-BOX INFO.
UNDO twetiq2, RETRY.
END.
IF tw_scso_freq <> wfFreq THEN DO:
IF wfFreq < TODAY THEN
/*MESSAGE "Fecha Requerido debe ser mayor o igual a hoy".*/
MESSAGE "Fecha debe ser mayor o igual a hoy" VIEW-AS ALERT-BOX INFO.
UNDO twetiq2, RETRY.
END.

FIND cc_mstr WHERE cc_ctr = wcCC AND cc_domain = "QAD" NO-LOCK NO-ERROR.

IF NOT AVAILABLE cc_mstr THEN DO:
/*MESSAGE "Centro de costos no registrado".*/
MESSAGE "no existe CC en la mstr qad" VIEW-AS ALERT-BOX INFO.
UNDO twetiq2, RETRY.
END.

FIND si_mstr WHERE si_site = wcAl AND si_domain = "QAD" NO-LOCK NO-ERROR. /*busqueda del costo unitario del articulo*/

IF NOT AVAILABLE si_mstr THEN DO:
/*MESSAGE "Almacen no registrado".*/
MESSAGE "no esta el almacen en la mstr qad" VIEW-AS ALERT-BOX INFO.
UNDO twetiq2, RETRY.
END.
END. /* do on error */
ASSIGN
tw_scso_fsol = wfFsol
tw_scso_freq = wfFreq
tw_scso_cc = wcCc
tw_scso_al = wcAl
tw_scso_desc = wcDesc.
END. /* fin del else do*/
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:Actualizar registros

Publicado por Miguel Angel (140 intervenciones) el 11/06/2008 00:59:25
Según veo en tu programa, puede ser que el registro que tratas de actualizar ni siquiera existe.

En el primer FIND, pondría un NO-LOCK NO-ERROR. Para ver si existe o no el registro.

IF NOT AVAILABLE tw_scso_mstr THEN DO:
MESSAGE "ERROR: No existe folio a modificar" VIEW-AS ALERT-BOX.
END.

Por lo demás el programa parece estar bien.

Te recomiendo que vayas monitoreando el programa con MESSAGE para ver su comportamiento en cada uno de los pasos.

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

RE:Actualizar registros

Publicado por Andro33 (2 intervenciones) el 11/06/2008 18:39:07
Saludos Miguel Angel y Desarrolladores PROGRESS.

el registro existe efectivamente el FIND lo encontraba, pero por una extra­ña razon los campos de fecha, los cuales validaba seguido del UPDATE, no los acualizaba, los demas "campos", tipo char los actualizaba sin ningun problema, despues de depurar el codigo paso a paso, encontre el siguiente sutil error:

la validacion de las fechas se encontraba de la siguiente manera:

IF tw_scso_freq <> wfFreq THEN DO:
IF wfFreq < TODAY THEN
/*MESSAGE "Fecha Requerido debe ser mayor o igual a hoy".*/
MESSAGE "Fecha debe ser mayor o igual a hoy" VIEW-AS ALERT-BOX INFO.
UNDO twetiq2, RETRY.
END.

el problemilla radicaba en el IF anidado, este se ejecutaba en todos los casos inclusive si se ingresaba una fecha valida, pero se encontraba con el UNDO como se puede apreciar, q me devolvia a la etiqueta (twetiq2) y no tomaba el UPDATE.

Solucion: extructurar el bloque IF anidado con un THEN DO: .... END, para que solo acceda en caso de fechas erroneas.

Gracias a todos.
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