2.5.3 ステップ3.コードの記述

ユーザー・インターフェースが完了したので、コードを記述します。ソースタブをクリックし、フォームにソース・コードを表示します。フォームに置いたコントロールとフィールドのDEFINE_COMステートメントがエディターに自動的に作成されていることに注目してください。これらのステートメントは、コンポーネントに定義されたプロパティを示します。

3a.すべての従業員の詳細フィールドのグループを作成する

従業員の詳細フィールドを簡単に処理できるよう、グループ化します。

 

GROUP_BY NAME(#ALLFLDS) FIELDS(#EMPNO #SURNAME #GIVENAME #ADDRESS1 #ADDRESS2 #ADDRESS3 #POSTCODE #PHONEHME #PHONEBUS #STARTDTE #TERMDATE #DEPTMENT #SECTION #SALARY #MNTHSAL)

 

 

3b.取得ボタンのイベント・ルーチンを記述する

1.  名字の一部をもとにリストにデータを表示するコードを記述するには、詳細タブを表示し、リストの取得ボタンを選択し、イベントタブを1番上に持ってきます。

2.  Clickイベントをダブルクリックします。エディターにより、ソースビューにEVTROUTINEステートメントとENDROUTINEステートメントが挿入されました。

Image1

     詳細タブのClickイベントのアイコンが変化し、イベントのルーチンが指定されたことを示します。

3.  取得ボタンのClickイベントに以下のコードを追加します。

 

EVTROUTINE HANDLING(#GET.Click)
   change #surname #partname
   clr_list #ltvW_1
   SELECT FIELDS(#ltvw_1) FROM_FILE(PSLMST2) WITH_KEY(#SURNAME) GENERIC(*YES)
      add_entry #ltvw_1
   endselect  
ENDROUTINE 

 

     イベント・ルーチンは、#PARTNAMEフィールドに入力された値を#SURNAMEに割り当てます。それからリスト・ビューをクリアします。SELECTのループで名字が#SURNAMEの値と一致するすべての従業員を選択し、エントリーをリスト・ビューに追加します。

4.  従業員の詳細を取得するイベント・ルーチンを記述します。

a.  リスト・ビューのItemGotSelectionイベントを呼び出すClickイベント・ルーチンを作成します。このイベントは、ユーザーがリスト・ビューの従業員を選択したときにトリガーされます。

b.  ここで、選択された従業員のコードを取得する以下のコードを記述します。

EVTROUTINE HANDLING(#LTVW_1.ItemGotSelection)
   FETCH FIELDS(#ALLFLDS) FROM_FILE(PSLMST) WITH_KEY(#EMPNO) ISSUE_MSG(*YES)
ENDROUTINE  
 

5.  新しい従業員を入力するイベント・ルーチンを記述します。

作成ボタンのClickイベントのルーチンを作成します。イベントを使用してすべてのフィールドをブランクにし、新しい従業員の詳細を入力できるようにします。

 

EVTROUTINE HANDLING(#NEW.Click)
   change #allflds *Null
ENDROUTINE  
 

6.  従業員を削除するイベント・ルーチンを記述します。

現在選択されている従業員を削除する削除ボタンのClickイベントのルーチンを作成します。

 

EVTROUTINE HANDLING(#DELETE.CLICK)
   DELETE FROM_FILE(PSLMST) WITH_KEY(#EMPNO) ISSUE_MSG(*YES)
ENDROUTINE  
 

7.  変更を保存するイベント・ルーチンを記述します。

既存の従業員を更新したり、新しい従業員の詳細を挿入するための保存ボタンのClickイベントのイベント・ルーチンを作成します。

 

EVTROUTINE HANDLING(#SAVE.CLICK)
check_for in_file(pslmst) with_key(#empno) val_error(*next)
if_status is(*EQUALKEY)
      UPDATE FIELDS(#ALLFLDS) IN_FILE(PSLMST) WITH_KEY(#EMPNO) ISSUE_MSG(*YES)
      IF_STATUS IS(*OKAY)
         MESSAGE MSGTXT('Employee details have been updated.')
      endif  
else 
      INSERT FIELDS(#ALLFLDS) TO_FILE(PSLMST)  ISSUE_MSG(*YES)
      IF_STATUS IS(*OKAY)
         MESSAGE MSGTXT('Employee details have been added.') 
      endif  
   endif  
ENDROUTINE  
 

イベント・ルーチンでは、最初に従業員が存在するかどうかをチェックします。存在する場合は、従業員の詳細を更新します。従業員番号に一致するレコードがない場合は、従業員の詳細を挿入します。メッセージは、更新と挿入の後に表示されます。