ページの先頭行へ戻る
NetCOBOL V12.0 PowerCOBOL ユーザーズガイド
FUJITSU Software

9.8.1 エディットコントロールとの連携を設計時に設定する

ADOデータソースコントロールを使って、エディットコントロールとデータベースを連携させる方法について、以下の手順で説明します。

  1. フォームにコントロールを配置します。

  2. コントロールのプロパティを設定します。

  3. コントロールの手続きを記述します。

ポイント

本節で作成するサンプルプログラムは、"ADODataSource\ADODataSource1.ppj"に格納されています。必要に応じて参照してください。

フォームにコントロールを配置する

以下のコントロールを図のようにフォームに配置します。

ポイント

エディットコントロールがツールバーにない場合、フォームにコントロールを配置する前に、以下の手順で、コントロールをツールボックスに追加してください。

  1. [ツール]メニューの[カスタムコントロール]コマンドを選択します。

  2. [カスタムコントロール]ダイアログボックスの[利用可能なコントロール]一覧中の[FUJITSU PowerCOBOL Light Weight Controls 4.6]をチェック状態にします。

  3. ツールボックスに、エディットコントロールのビットマップが追加されたことを確認します。

コントロールのプロパティを設定する

まず、コントロールのプロパティを次の図と同じになるよう変更します。

  1. プロジェクトウィンドウのデザインツリーウィンドウからラベルコントロールを1つずつ選択し、プロパティリストウィンドウ上の"Caption"に、それぞれの文字列を設定します。

  2. 各コマンドボタンコントロールのプロパティ設定ダイアログボックスを開き、[コマンドボタン]タブの[キャプション]を変更します。

ポイント

ラベルコントロールには、コントロール固有のプロパティページは用意されていません。したがって、ラベルコントロールに表示する文字列や文字の配置(Alignmentプロパティ)などはプロパティリストウィンドウを使って設定します。

また、エディットコントロールについても同様に、プロパティリストウィンドウで設定します。

次に、ADOデータソースコントロール(CmADODataSource1)のプロパティ設定ダイアログボックスを開き、以下の手順でプロパティを設定します。

  1. [ADOデータソース]タブで[接続文字列]の右側にあるボタンをクリックします。
    →3つのサブメニューが表示されます。

  2. [ODBCデータソース名を指定]を選択します。
    →[ODBCデータソース名の選択]ダイアログボックスが表示されます。

  3. ODBCデータソース名の一覧からCOBOLSampleを選択します。(一覧にCOBOLSampleがない場合は、後述のワンポイントを参照してください。)

  4. [OK]ボタンをクリックします。

  5. [レコードセット]タブを開きます。

  6. [コマンドタイプ]から"2 - adCmdTable"を選択します。

  7. [適用]ボタンをクリックします。
    →[コマンドテキスト]がコンボボックスに変わり、連携するテーブルの選択ができるようになります。

  8. [コマンドテキスト]から"STOCK"を選択します。

  9. [OK]ボタンをクリックします。

次に、以下の手順で、それぞれのエディットコントロール(CmEdit1~CmEdit4)のデータソースとして、ADOデータソースコントロール(CmADODataSource1)を設定します。

  1. エディットコントロールのプロパティ設定ダイアログボックスを開きます。

  2. [データ連結]タブの[データソース]から、"CmADODataSource1"を選択します。

  3. [適用]ボタンをクリックします。

  4. [データフィールド]から、エディットコントロールに設定するフィールド名(CmEdit1の場合は"GNO"、CmEdit2の場合は"GOODS"、CmEdit3の場合は"QOH"、CmEdit4の場合は”WHNO”)を選択します。

  5. [OK]ボタンをクリックします。

最後に、以下の手順で、それぞれのエディットコントロール(CmEdit1~CmEdit4)の文字列を削除します。

  1. プロジェクトウィンドウのデザインツリーウィンドウからエディットコントロールを選択します。

  2. プロパティリストウィンドウ上の"Text"に設定されている文字列を削除します。

ポイント

  • ここでは、SQL Serverに作成した、COBOLSampleデータベースを使用します。COBOLSampleデータベースの構築手順については、“C.4 サンプルデータベースを構築する”を参照してください。

  • ODBCデータソース名の選択で、一覧にCOBOLSampleがない場合は、一覧の右側にある[新規作成]ボタンをクリックし、以下の手順で一覧に追加します。

    1. データソースの型として、ユーザデータソースを選択します。

    2. [次へ]ボタンをクリックします。

    3. データソースのドライバとして、SQL Serverを選択します。

    4. [次へ]ボタンをクリックします。

    5. [完了]ボタンをクリックします。
      →[SQL Server に接続するための新規データ ソースを作成する]ダイアログボックスが表示されます。

    6. 新しいデータソースの名前は、“COBOLSample”を設定します。

    7. データソースの説明には、”NetCOBOL サンプル”を設定します。

    8. 接続するSQL Server サーバー名には、COBOLSampleデータベースを構築したサーバー名を設定します。

    9. [次へ]ボタンをクリックします。

    10. SQL Serverに接続にユーザIDとパスワードが必要な場合は、SQL ServerのログインIDとパスワードを設定します。

    11. [次へ]ボタンをクリックします。

    12. [既定のデータベースを以下のものに変更する]をチェックし、“COBOLSample”を選択します。

    13. [次へ]ボタンをクリックします。

    14. [完了]ボタンをクリックします。

    15. [OK]ボタンをクリックします。

  • すべてのコントロールのプロパティを設定したあと、フォームをプレビューして、エディットコントロールにSQL Serverのデータが表示されれば、データベースと正しく連携できていることが確認できます。

  • プロパティの設定方法は、利用するデータベースやADOの種類により異なります。詳細は、各データベースおよびADOのマニュアルを参照してください。

コントロールの手続きを記述する

ADOデータソースコントロールを使って連携しているデータベースの、カレントレコードを変更することにより、エディットコントロールに表示される文字列を変更します。

カレントレコードの変更は、以下のイベント手続きに記述します。

イベント

説明

CmCommand1-Click

カレントレコードの位置を先頭に移動します。

CmCommand2-Click

カレントレコードの位置を次のレコードに移動します。

CmCommand1-Click
    ENVIRONMENT     DIVISION.
    DATA            DIVISION.
    WORKING-STORAGE SECTION.
    PROCEDURE       DIVISION.
   *    カレントレコードの位置を先頭に移動します。
        INVOKE "Recordset" OF CmADODataSource1 "MoveFirst"
CmCommand2-Click
    ENVIRONMENT     DIVISION.
    DATA            DIVISION.
    WORKING-STORAGE SECTION.
    PROCEDURE       DIVISION.
   *    カレントレコードの位置を次のレコードに移動します。
        INVOKE "Recordset" OF CmADODataSource1 "MoveNext"

ポイント

"MoveFirst"および"MoveNext"は、ADOの"Recordset"オブジェクトのメソッドです。その他にも、"Recordset"オブジェクトのメソッドやプロパティを利用して、レコードに対する操作ができます。
たとえば、カレントレコードのフィールド"GOODS"の値を参照する場合は、以下のような手続きを記述します。

      MOVE "Value" OF "Item"("GOODS") OF "Fields" OF
              "Recordset" OF CmADODataSource1 TO WK-PRODUCT-NAME

また、フィールド"QOH"の値を更新する場合は、以下のような手続きを記述します。

      MOVE 1000 TO "Value" OF "Item"("QOH") OF
               "Fields" OF "Recordset" OF CmADODataSource1
      INVOKE "Recordset" OF CmADODataSource1 "Update"

さらに、新規にレコードを追加する場合は、以下のような手続きを記述します。

      INVOKE "Recordset" OF CmADODataSource1 "AddNew"
      MOVE WK-GNO   TO "Value" OF "Item"("GNO") OF
               "Fields" OF "Recordset" OF CmADODataSource1
      MOVE WK-GOODS TO "Value" OF "Item"("GOODS") OF
               "Fields" OF "Recordset" OF CmADODataSource1
      MOVE WK-QOH   TO "Value" OF "Item"("QOH") OF
               "Fields" OF "Recordset" OF CmADODataSource1
      MOVE WK-WHNO TO "Value" OF "Item"("WHNO") OF
              "Fields" OF "Recordset" OF CmADODataSource1
      INVOKE "Recordset" OF CmADODataSource1 "Update"