{ ------------------------------------------------------------------ PROGRAMA : COPRMT017 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla Formas de Embarque. PROGRAMADOR : JUAN SOTO FECHA REALIZACION : AGOSTO 1997 ------------------------------------------------------------------ } GLOBALS "coprgb000.4gl" FUNCTION coprmt017() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cofmmt017 FROM "cofmmt017" DISPLAY FORM cofmmt017 CALL pantalla() DISPLAY "coprmt017" AT 4,3 DISPLAY "Formas de Embarque" AT 6,31 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" CLEAR FORM CALL copcad017() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" CALL copcmf017() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION copcad017() WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro INPUT BY NAME embarques.* ## Verifica que el codigo no exista en el catalogo de formas de embarques. ## Si existe, entonces despliega los datos del registro existente. AFTER FIELD cod_embarque IF embarques.cod_embarque = 0 OR embarques.cod_embarque IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_embarque ELSE SELECT * INTO embarques.* FROM cotb00027 WHERE cod_embarque = embarques.cod_embarque IF STATUS != NOTFOUND THEN IF embarques.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_embarque END IF DISPLAY BY NAME embarques.* LET numero_msg = 12 CALL msg(numero_msg) LET embarques.descrip_emb = NULL NEXT FIELD cod_embarque END IF END IF CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF AFTER FIELD descrip_emb IF embarques.descrip_emb IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip_emb END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF embarques.descrip_emb IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip_emb ELSE INSERT INTO cotb00027 VALUES (embarques.cod_embarque, embarques.descrip_emb, null, USER, CURRENT, null, null) CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM LET embarques.cod_embarque = NULL LET embarques.descrip_emb = NULL NEXT FIELD cod_embarque END IF AFTER FIELD fech_mod EXIT INPUT END INPUT END FUNCTION FUNCTION copcmf017() WHENEVER ERROR CONTINUE ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON cotb00027.* FROM cotb00027.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE * FROM cotb00027 where ", " status_t is null AND ", criterio clipped, " ORDER BY 1" PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF FETCH FIRST datos INTO embarques.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF DISPLAY BY NAME embarques.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO embarques.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME embarques.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO embarques.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME embarques.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO embarques.* DISPLAY BY NAME embarques.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO embarques.* DISPLAY BY NAME embarques.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF embarques.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) RETURN END IF INPUT BY NAME embarques.descrip_emb, embarques.us_crea, embarques.fech_crea, embarques.us_mod, embarques.fech_mod WITHOUT DEFAULTS AFTER FIELD descrip_emb IF embarques.descrip_emb IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip_emb END IF AFTER INPUT #### Verifica si el usuario presiono la tecla IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF UPDATE cotb00027 SET descrip_emb = embarques.descrip_emb, us_mod = USER, fech_mod = CURRENT WHERE cod_embarque = embarques.cod_embarque CALL integridad() IF bandera = 1 THEN RETURN END IF LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" UPDATE cotb00027 SET status_t = "E" WHERE cod_embarque = embarques.cod_embarque LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION