「データベースアクセス」コンポーネントの疑問

MZ Platformとは 掲示板 MZプラットフォームユーザー会掲示板 「データベースアクセス」コンポーネントの疑問

3 件の投稿を閲覧中 - 1 ~ 3 件(全 3 件)
  • 著者
    投稿
  • #6991
    TENTEN
    一般参加者

    お世話になります。 「データベースアクセス」コンポーネントについて確認させてください。

    「イベント番号を指定してSQL文を実行する」メソッドを呼ぶと、処理完了イベントの発生の際にイベント番号が回収できるのは理解しました。
    しかし、どの様な場合を想定してイベント番号をセットできる仕組みにしているのかが想像できません。

    「SQL文を実行する」と「イベント番号を指定してSQL文を実行する」の棲み分けを教えてください。

    #6993
    MZPlatformユーザー会
    サイト管理者

    ご連絡ありがとうございます。

    [データベースアクセス]では複数のSQL文が実行できます。メソッド「SQL文を実行する(String)」で検索SQLを実行するかあるいは戻り値のないSQLを実行するかによって、実行完了後に発生するイベントや戻り値には違いがあります。

    1)更新SQL(Update, Delete等)を実行した場合:
      発生イベント:処理完了イベント
      イベント内包データ、または戻り値として更新された行数を取得できる
    2)検索SQL(Select)を実行した場合:
      発生イベント:データ生成ベント 
      イベント内包データ、または戻り値として検索結果をテーブル型データで取得できる

    [1]1)で更新処理が終わった後に、メッセージダイアログで『更新処理が終わりました』『削除処理が終わりました』と出したいというときに、実行する文でイベント番号を分けることが考えられます。
     例1)先に「イベント番号を指定してSQL文を実行する」を実行後、
    [データベースアクセス]---処理完了イベント---[メッセージダイアログ](イベント番号)

    [2]2)の結果の返るSelect文の実行のとき、Selectの内容によって行数はもちろん列数の違うテーブルが取得されます。検索結果テーブルからデータを取得して処理を進める際、区別しておかないとエラーの原因となります。また反対にイベント番号があると検索結果を得てからの処理を分岐しやすいということにもなります。
    例2)先に「SQL文を実行する(String)」でSelect文を実行後、
    [データベースアクセス]---データ生成イベント---[テーブル格納変数] テーブルを設定する 引数:イベント内包、イベント対象データ
    複数の検索結果が同じ[テーブル格納変数]に格納される

     ただし、戻り値をメソッド処理結果で取得する場合は各SQL文の実行を区別できれば、[2]の問題は起きにくいかもしれません。
    例3)
    [ボタン]---[データベースアクセス]SQL文を実行する
          |--[テーブル格納変数]テーブルを設定する 引数:メソッド処理結果

    [3]複合コンポーネント内のコンポーネントのイベントは、複合コンポーネントのメソッド「(イベント番号を指定して)イベントを伝播させる(PFEvent)」外部に伝播させます。
    同一イベント名のイベントを、複数複合コンポーネントから発生させる場合、イベント番号を付けないと区別できません。(例、[ボタン]、[フレーム]のアクションイベントを複合コンポーネント内から伝播し発生させる)
    イベント伝播時に番号を付けることもできますが、メソッド「イベント番号を指定してSQL文を実行する(String,int)」で指定したイベント番号は「イベントを伝播させる(PFEvent)」で伝播されます。

    主に考えられる[1]~[3]を挙げてみましたが、目的や機能によって処理設定の方法は変わってくるかと存じます。ご不明な点、ご要望等ございましたら、どうぞ再度ご連絡ください。
    よろしくお願い申し上げます。

    #6998
    TENTEN
    一般参加者

    詳細なご回答ありがとうございました。
    質問の仕方が悪くて申し訳ございません。 当方の疑問は
    (1) SQL文を実行する「接続先コンポーネント」が複数ある
    (2) それぞれのSQL文の処理結果は(1)の直下に配置した「接続先コンポーネント」で受ける
    とき、「イベント番号を指定してSQL文を実行する」を選ぶ必要があるのかどうかでした。
    (2)が無く、「データベースアクセス」コンポーネントの「データ生成」イベントで全ての処理結果を受ける場合は、どの「接続先コンポーネント」からのものかが判らないので「イベント番号」で区別させるのだろうと解釈しています。

3 件の投稿を閲覧中 - 1 ~ 3 件(全 3 件)
  • このトピックに返信するには、ログインしてください。