チェックボックスグループについて

MZ Platformとは 掲示板 MZプラットフォームユーザー会掲示板 チェックボックスグループについて

9 件の投稿を閲覧中 - 1 ~ 9 件(全 9 件)
  • 著者
    投稿
  • #7388
    koni
    一般参加者

    お世話になっております。
    チェックボックスグループについて質問があります。
    テーブルデータを条件分けして抽出する処理を、チェックボックスグループで実現できるようにしたく考えております。
    <条件>
    ・テーブルデータはMySQLに保存している。
    ・チェックボックスグループは複数チェックされることもある。
    チェックボックスのサンプルファイルなどを見ながら検討をしましたが、なかなかうまくいかず
    ご教授いただきたく思います。
    同内容をPDFにまとめておりますので、ご確認いただけますと幸いです。
    よろしくお願いいたします。

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

    お問い合わせありがとうございます。
    メソッド「getSelectedItems()」で選択要素名のリストを取得することができます。メソッドが英語名のままになっており、判りにくく申し訳ございません。

    1)既にデータベースから検索したテーブルデータがMZ上にある場合は、[テーブルサブセットフィルタ」を使ってさらに文字列や日付等の条件で行を選択し取得することが可能です。
    複数の選択条件がある場合、正規表現を使うことが考えられます。
    「AAA|BBB」で「AAA」または「BBB」の文字列という意味になるので、これを[文字列格納変数]の中に作成し、[テーブルサブセットフィルタ」のメソッド「行データの正規表現で行を選択する(int,String)」の引数とします。

    2)改めてデータベースから検索する場合はSelect文にwhere句を追加することが必要です。
    [文字列格納変数]の中にwhere句の雛形を設定し、要素名で置き換えて、さらにSELCT文と結合します。
    以上2点について簡単なサンプルファイルを作成しましたので、ご覧下さい。
    既にwhere句があるSelect文にさらに条件を追加する場合は少し変更する必要があります。

    ファイルをご覧いただき、ご不明な点等ございましたら、再度ご連絡いただければ幸いです。
    どうぞよろしくお願い申し上げます。

    添付ファイル:
    #7399
    koni
    一般参加者

    サンプルファイルを確認し、チェックボックスグループによる抽出をすることができました。
    編集していて分かったこととして、()[]などの半角かっこが入っていると、
    抽出ができないようです。
    同じ半角でも/(スラッシュ)は抽出することができました。
    とりあえずは、半角かっこを入れないようにしていきます。
    今後ともよろしくお願いいたします。

    #7401
    koni
    一般参加者

    上記に加えて、質問があります。
    作成中のSQL文で、データを月ごとに表示させるためにwhere句を使用している関係で、今回のチェックボックスグループの追加の際に、()でくくる必要がありますが、チェックの数によらずに()を指定する方法はあるでしょうか。

    参考として下記のようなイメージです。
    ・チェックなしの時:()を付けない
    ・チェック1個の時:select * from test_table where ‘2024/02/01’ <=n_date and ‘2024/02/29′ >= n_date and (status=’完了’)
    ・チェック2個以上の時:select * from test_table where ‘2024/02/01’ <=n_date and ‘2024/02/29′ >= n_date and (status=’完了’ or status=’修理 / 調査中’ or status=’回答待ち’)
    よろしくお願いいたします。

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

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

    正規表現では半角括弧等がメタ文字となっているため、検索対象とする際には半角¥マークを付けてエスケープする必要があります。複雑になってしまうため、メソッド「行データを文字列で選択する(int,String)」を使って、項目が選択されている数だけ、行データを選択する繰り返し処理を行った方が簡単になるかと思います。メタ文字を考慮に入れておらず大変失礼いたしました。
    SQL文内での半角括弧使用に関して手元のMySQLで試した限りでは、引用符を付けて値として用いる場合は問題ないようですが、何かありましたらお知らせいただけると助かります。

    SQL文の作成では[文字列格納変数]に設定するSQL文およびwhere句部分の雛形を変更し、また繰り返し処理終了後に文字列に「)」を連結する処理を追加することで可能です。

    上記の修正を加えたサンプルファイルを添付いたしますので、ご参考になれば幸いです。
    ご不明な点がございましたら、どうぞ再度ご連絡ください。
    よろしくお願い申し上げます。

    添付ファイル:
    #7404
    koni
    一般参加者

    ご回答ありがとうございます。

    半角括弧などのメタ文字は、文字列に変換すれば、抽出が可能とのことで理解しました。
    また、半角括弧の連結についても、サンプルファイルを確認し、理解することができました。

    まだ、プログラム的な考え方の知識が足りていないため、for文などの条件分けを1から考えることが難しいですが、ファイルを参考にしながら勉強していきたいと思います。

    今後ともよろしくお願いいたします。

    #7475
    koni
    一般参加者

    以前、ご回答いただいたチェックボックスグループにて、追加で質問があります。

    チェックボックスグループにて、選択した項目に応じて、設定した文字を取得したいのですが
    どのようにすればよいでしょうか。

    実施したいこととしては、以下になります。
    ・選択した項目に応じて、select文の条件分け(where句)を追加したい。
    ・チェックボックスグループ内のデータは2個あり、4パターンでwhere句を設定したい。
    1. 未選択 ⇒where句なし
    2. 1個目のみ選択 ⇒設定したwhere句
    3. 2個目のみ選択 ⇒設定したwhere句
    4. 1、2個目を両選択 ⇒設定したwhere句をorでつなげたい。

    ・前回までは、リスト格納変数でリストを読み取っているが、
     今回は、リストの文字と、追加したい文字は異なる。

    よろしくお願いいたします。

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

    お問い合わせありがとうございます。

    前回のwhere句の作成でも複数チェックが入った場合には、その分orで繋げた文を作成していますので、基本的な処理は同一かと思います。
    違う点はチェックボックスの項目のラベル表示と実際にwhere句で使う語句が違うということです。
    この語句がどのような形で格納してあるかによって処理が違う可能性もありますが、もしDB内にあるのならテーブル形式になりますし、2行2列程度の[テーブル]ならアプリケーション内にあってもファイルサイズに大きな影響を与えないと思いますので、取り敢えず[テーブル]に設定するということで回答します。

    項目ラベル名を使わないのであれば、選択された位置をリスト形式で取得するメソッド「getSelectedIndices()」で対応できます。where句の置換え語句を[テーブル]から取得する以外はリスト格納変数に入れた後の処理も大きくは変わりません。

    前回のサンプルファイルを変更したものを添付いたします。
    ご不明な点等ございましたら、どうぞ再度ご連絡ください。
    よろしくお願い申し上げます。

    添付ファイル:
    #7481
    koni
    一般参加者

    ご回答ありがとうございます。

    「getSelectedIndices()」によりチェック位置を取得して、テーブルを読み込むことによりwhere句を作成することができました。

    今後ともよろしくお願いいたします。

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