Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Exportar datos desde ORACLE Foms a CSV

1 diciembre, 2019
oracle forms csv

En esta entrada vamos a ver un ejemplo de como exportar datos desde ORACLE Foms a CSV.
ORACLE forms es muy limitado pero si dispones de webutil puedes utilizar estas funciones para conseguir pasar tus datos desde forms a csv.

ORACLE Foms a CSV


Este sería el código del ejemplo

DECLARE
  FILA INTEGER:=1;   
  LINEA varchar2(2000);  
  control BOOLEAN := TRUE;   
  cTxNomFic VARCHAR2(2000) := 'elnombreCsv_'||TO_CHAR(SYSDATE,'YYYYMMDD_HHMISS')||'.csv';
  cLalinea VARCHAR2(20000) := NULL;
  cAccion VARCHAR2(2000);
  in_file CLIENT_text_io.file_type;
   RET PLS_INTEGER;
   lNoHayCostes BOOLEAN:=TRUE;
   CURSOR C1(numPedido IN NUMBER) IS
     SELECT CAMPO1,CAMPO2,CAMPO3
     FROM AVSERCOS
     WHERE NUALBARM = numPedido
     GROUP BY NUPROVEE;
BEGIN  
     go_block('BL_EXCEL');
     FIRST_RECORD;
     BEGIN
        in_file := CLIENT_text_io.fopen(prueba.direccion||'\'||cTxNomFic, 'W');
     EXCEPTION
       WHEN OTHERS THEN
          RET := MENSAJE.F_MENSAJE('E','No se ha podido abrir el fichero.');
          control := FALSE;
     END;
     IF control THEN
       cLalinea := 'uno'||';'||'dos'||';'||'tres'||';'||'cuatro'||';'||'cinco'||';'||
                 'seis'||';'||'siete'||';'||'ocho'||';'||'nueve'||';'||'diez'||';'||
                 'once'||';';
	      cLalinea := TRADUCTOR.F_EXCEL(cLalinea,:GLOBAL.IDIOMA);
        CLIENT_TEXT_IO.PUT_LINE(In_File, cLalinea);
        LOOP
          IF :BL_EXCEL.EF_CDCONTEN IS NULL THEN
            EXIT;
          END IF;
			    FILA := FILA +1;
          cLalinea := :BL_EXCEL.UNO||';'||:BL_EXCEL.DOS||';'||:BL_EXCEL.TRES||';'||:BL_EXCEL.CUATRO||';'||:BL_EXCEL.CINCO||'-'||:BL_EXCEL.SEIS||'-'||:BL_EXCEL.SIETE||'-'||:BL_EXCEL.OCHO||';'||
          :BL_EXCEL.NUEVE||';'||:BL_EXCEL.DIEZ||';'||:BL_EXCEL.ONCE||';'||:BL_EXCEL.UNO||';'||
          :BL_EXCEL.DOS||';'||:BL_EXCEL.TRES||';';
			      CLIENT_TEXT_IO.PUT_LINE(In_File, cLalinea);
          IF :SYSTEM.LAST_RECORD = 'TRUE' THEN
            EXIT;
          END IF;
          NEXT_RECORD;
			  END LOOP;
        BEGIN
          CLIENT_text_io.fClose(in_file);
        EXCEPTION
          WHEN OTHERS THEN
             RET := MENSAJE.F_MENSAJE('E','No se ha podido cerrar el fichero.');
             control := FALSE;
        END;
        IF control THEN
           RET := MENSAJE.F_MENSAJE('A','Fichero generado.;Directorio#'||AS0BD001.FC_FANUBIS||'#Nombre Fichero#'||cTxNomFic);
        END IF;
     END IF;
EXCEPTION
   WHEN OTHERS THEN
      CLIENT_text_io.fClose(in_file);
END;

Espero que te haya sido útil.