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に組み込むことができますので是非ご活用ください。