Showing posts with label Oracle Forms. Show all posts
Showing posts with label Oracle Forms. Show all posts

Wednesday, 4 July 2018

Using Oracle Forms to load local files


using the below code In load file “button” using “when-button-pressed” trigger.
DECLARE
   l_userhome            VARCHAR2 (200)
         := webutil_clientinfo.get_system_property ('user.home')
            || '\Desktop';
   l_filename            VARCHAR2 (200) := NULL;
   l_bare_filename       VARCHAR2 (200) := NULL;
   l_fileprefix          VARCHAR2 (200) := NULL;
   l_serverfilename      VARCHAR2 (200) := NULL;
   l_upload_path         VARCHAR2 (200) := NULL;
   l_version_path        VARCHAR2 (200) := NULL;
   l_option_grade_path   VARCHAR2 (200) := NULL;
   l_size_curve_path     VARCHAR2 (200) := NULL;
   l_filesize            NUMBER;
   al_con                alert;
   l_status              BOOLEAN;
   os_name               VARCHAR2 (100)
                           := UPPER (webutil_clientinfo.get_operating_system);
   l_mainbrand           VARCHAR2 (100);
   l_country             VARCHAR2 (100);
   l_jobid               NUMBER;

   CURSOR c_upload_dir
   IS
      SELECT t.VALUE AS directory_path
        FROM sys_directories t
       WHERE t.NAME = 'OE_TRACKING_FILE';
BEGIN
   OPEN c_upload_dir;

   FETCH c_upload_dir
    INTO l_upload_path;

   CLOSE c_upload_dir;

   l_filename :=
      webutil_file.file_open_dialog
                                  (directory_name      => l_userhome,
                                   file_name           => NULL,
                                   file_filter         => 'CSV files (*.csv) |*.csv',
                                   title               => 'Dir Upload'
                                  );

   IF l_filename IS NOT NULL
   THEN
      --- to get the file size ---
      l_filesize := webutil_file.file_size (file_name => l_filename);

      --- to get the filename without the path ---
      IF os_name LIKE 'WINDOWS%'
      THEN
         l_bare_filename :=
                           SUBSTR (l_filename, INSTR (l_filename, '\', -1)
                                    + 1);
      ELSE
         l_bare_filename :=
                           SUBSTR (l_filename, INSTR (l_filename, '/', -1)
                                    + 1);
      END IF;

      IF webutil_file.file_exists (file_name => l_filename)
      THEN
         IF webutil_file.file_is_readable (file_name => l_filename)
         THEN
            IF l_filesize > 0
            THEN
               l_serverfilename :=
                     l_bare_filename
                  || '_'
                  || TO_CHAR (SYSDATE, 'DDMMYYYYHH24MISS');

               IF l_upload_path IS NOT NULL
               THEN
                  l_status :=
                     webutil_file_transfer.client_to_as_with_progress
                                 (clientfile            => l_filename,
                                  serverfile            =>    l_upload_path
                                                           || '/'
                                                           || REPLACE
                                                                 (l_serverfilename,
                                                                  '.csv',
                                                                  ''
                                                                 )
                                                           || '.csv',
                                  progresstitle         => 'File Upload in progress',
                                  progresssubtitle      => 'Please wait',
                                  asynchronous          => FALSE,
                                  callbacktrigger       => ''
                                 );
                  SYNCHRONIZE;

                  IF l_status = TRUE
                  THEN
                     MESSAGE ('done transfer');
                     MESSAGE ('done transfer');
                     l_status := FALSE;
                  ELSE
                     MESSAGE ('Not transfer');
                     MESSAGE ('Not transfer');
                  END IF;
               END IF;
            END IF;
         ELSE
            MESSAGE ('File ' || l_bare_filename || ' is blank');
         END IF;
      ELSE
         MESSAGE (   'Unable to read the file'
                  || CHR (10)
                  || 'File Name='
                  || l_bare_filename
                  || ', '
                  || CHR (10)
                  || 'File Size='
                  || l_filesize
                  || ' Byte'
                 );
      END IF;
   ELSE
      MESSAGE ('File ' || l_bare_filename || ' is not found');
   END IF;
EXCEPTION
   WHEN OTHERS
   THEN
      MESSAGE (SQLERRM);
END;