Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


Valence Formウィジェットからのファイルアップロード方法

Valence 6.2 20240126.1 でFormウィジェットにファイルアップロード機能が追加されました。Formウィジェットにファイルアップロード用の入力欄を配置して、ファイルのアップロードができるようになっています。Tipsでは、Formウィジェットでファイルアップロードを行う方法についてご紹介します。

Formウィジェットにファイルアップロード用入力欄を設定

Formウィジェットのフィールド一覧にNAB_UPLOAD(ファイルアップロード)用の項目が追加されていますので、チェックを設定して機能を有効にします。
有効に設定するとFormウィジェット上に画像アップロード用の入力欄が表示されます。

アプリケーションの編集画面 (動作内容)

アプリケーションの編集画面で「動作内容」を設定します。
ボタンをクリック時に、「RPGプログラムの呼び出し」を実行することで、Formウィジェットの入力内容をRPGプログラムに送信できます。
送信した内容を、RPGプログラムで受取り、ファイルアップロードの処理と更新処理を記述します。

RPGプログラムの記述例

RPGプログラムではFormウィジェットのフィールド内容を取得できます。
また、ファイルアップロードのRPGプログラムを実行している場合には、vvInデータセットでpathとfilename を指定後、vvIn_file(vvIn:’*NULL’)を呼び出してください。
 ※赤字 ⓵ファイルアップロードの処理

アップロードの処理に失敗している場合には、vvIn.error にエラーメッセージが格納されるので処理の成否を判別できます。
なお、更新処理は通常のFormウィジェットと変わりませんので、フィールドの値をGetFormCharやGetFormNumで取得後、更新処理を記述ください。

dcl-proc process;
    dcl-s F1_ODPDCD varchar(10);
    dcl-s F1_ODPDNM varchar(32);
    dcl-s F1_ODPDKN varchar(20);
    dcl-s F1_ODTANK packed(9:0);
    dcl-s F1_ODGEUN packed(9:0);
    dcl-s F1_ODUNIT varchar(6);

    dcl-s TMPPATH varchar(200);

    F1_ODPDCD = GetFormChar('F1_ODPDCD');
    F1_ODPDNM = GetFormChar('F1_ODPDNM':'O');
    F1_ODPDKN = GetFormChar('F1_ODPDKN');
    F1_ODTANK = GetFormNum('F1_ODTANK');
    F1_ODGEUN = GetFormNum('F1_ODGEUN');
    F1_ODUNIT = GetFormChar('F1_ODUNIT':'O');
  
    // Valenceのtempディレクトリの取得
    TMPPATH = %char(%trim(vvUtility_getValenceSetting('TEMP_PATH')));
    // ⓵ファイルアップロードの処理=====
    // アップロードパス
    vvIn.path = %trim(TMPPATH);
    // ファイル名設定    
    vvIn.filename = %trim(F1_ODPDCD) + '.jpg';
    // ファイルアップロードを受け取る際は以下のように*NULLを設定
    vvIn_file(vvIn:'*NULL');
    // ===============================
    // ファイルアップロードの成否
    if vvIn.error <> *blanks;
      SetResponse('success':'false');
      SetResponse('msg': %trim(vvIn.error));
      return ;
    endif;
    
    //更新処理
    EXEC SQL UPDATE TIPS2412.MPRODP SET ODPDNM = :F1_ODPDNM,
               ODPDKN = :F1_ODPDKN,
               ODTANK = :F1_ODTANK,
               ODGEUN = :F1_ODGEUN,
               ODUNIT = :F1_ODUNIT
               WHERE ODPDCD = :F1_ODPDCD;

    //更新処理成否
    if sqlstate = '00000';
      SetResponse('success':'true');
      SetResponse('info':'更新完了しました。');
    else;
      SetResponse('success':'false');
      SetResponse('msg':'エラーが発生しました。');
    endif;
end-proc;

以上のように、簡単にファイルアップロード機能をApp Builderに組み込むことができますので是非ご活用ください。