{ ------------------------------------------------------------------ PROGRAMA : ACPRMT006 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla Catalogo de Bienes y Servicios PROGRAMADOR : TAdeo A. Ferreras. FECHA REALIZACION : Sept. 27, 1993. ------------------------------------------------------------------ } GLOBALS "acprgb000.4gl" DEFINE fecha6 DATE DEFINE descripcion1,descripcion2,descripcion3,descripcion4, descripcion5 CHAR(30) FUNCTION acprmt006() # WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM acfmmt006 FROM "acfmmt006" DISPLAY FORM acfmmt006 CALL pantalla() DISPLAY "acprmt006" AT 4,3 DISPLAY "Maestra de Activos Fijos Con Nuevos Codigos" AT 6,18 MENU "OPCIONES" COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" LET INT_FLAG = FALSE CLEAR FORM CALL acpcmf006() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU CLEAR FORM END MENU END FUNCTION ###### Funcion de modificacion FUNCTION acpcmf006() WHENEVER ERROR CONTINUE LET int_flag = false ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON a.codigo,a.descripcion,a.departamento FROM codigo,descripcion,departamento IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = "SELECT UNIQUE a.* FROM actb00005 a ", "WHERE ",criterio CLIPPED, " ORDER BY a.codigo " PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO activ5.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF SELECT a.descripcion INTO descripcion1 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cuenta_no SELECT a.descripcion INTO descripcion2 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cta_depr SELECT a.descripcion INTO descripcion3 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cta_gasto SELECT a.nom_dpto INTO descripcion4 FROM adtb00001 a WHERE a.departamento = activ5.departamento DISPLAY BY NAME activ5.*,descripcion1,descripcion2,descripcion3, descripcion4 MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO activ5.*,fecha6,estado.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT a.descripcion INTO descripcion1 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cuenta_no SELECT a.descripcion INTO descripcion2 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cta_depr SELECT a.descripcion INTO descripcion3 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cta_gasto SELECT a.nom_dpto INTO descripcion4 FROM adtb00001 a WHERE a.departamento = activ5.departamento DISPLAY BY NAME activ5.*,descripcion1,descripcion2,descripcion3, descripcion4 COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO activ5.*,fecha6,estado.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT a.descripcion INTO descripcion1 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cuenta_no SELECT a.descripcion INTO descripcion2 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cta_depr SELECT a.descripcion INTO descripcion3 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cta_gasto SELECT a.nom_dpto INTO descripcion4 FROM adtb00001 a WHERE a.departamento = activ5.departamento DISPLAY BY NAME activ5.*,descripcion1,descripcion2,descripcion3, descripcion4 COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO activ5.*,fecha6,estado.* SELECT a.descripcion INTO descripcion1 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cuenta_no SELECT a.descripcion INTO descripcion2 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cta_depr SELECT a.descripcion INTO descripcion3 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cta_gasto SELECT a.nom_dpto INTO descripcion4 FROM adtb00001 a WHERE a.departamento = activ5.departamento DISPLAY BY NAME activ5.*,descripcion1,descripcion2,descripcion3, descripcion4 LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO activ5.*,fecha6,estado.* SELECT a.descripcion INTO descripcion1 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cuenta_no SELECT a.descripcion INTO descripcion2 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cta_depr SELECT a.descripcion INTO descripcion3 FROM cgtb00001 a WHERE a.cuenta_no = activ5.cta_gasto SELECT a.nom_dpto INTO descripcion4 FROM adtb00001 a WHERE a.departamento = activ5.departamento DISPLAY BY NAME activ5.*,descripcion1,descripcion2,descripcion3, descripcion4 LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF estado.status_t="E" THEN LET numero_msg= 36 CALL msg(numero_msg) RETURN END IF IF activ5.status_t IS NOT NULL THEN RETURN END IF INPUT BY NAME activ5.codigo_n WITHOUT DEFAULTS AFTER FIELD codigo_n IF activ5.codigo_n IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD codigo_n END IF SELECT UNIQUE a.codigo_n FROM actb00005 a WHERE a.codigo_n = activ5.codigo_n AND a.status_t IS NULL AND a.codigo != activ5.codigo IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD codigo_n END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF ###### Proceso de Actualizacion UPDATE actb00005 SET codigo_n = activ5.codigo_n WHERE @codigo = activ5.codigo LET numero_msg = 13 CALL msg(numero_msg) #### Proceso para eliminar un registro logicamente COMMAND KEY ("L") "eLiminar" UPDATE actb00005 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT) WHERE @codigo = activ5.codigo LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" EXIT MENU CLEAR FORM END MENU END FUNCTION