作成した返信
-
著者投稿
-
MZPlatformユーザー会サイト管理者
テーブルで複数の行が選択されている場合,メソッドgetSelectedRows()を用いることにより,選択されている行のインデックスのリストを取得することが可能です.
このリストを,一旦,リスト格納変数等に設定します.繰り返し制御コンポーネントを用いてリストから順にインデックスを取得し,そのインデックスを用いて元のテーブルから該当する行データを取得します.
添付ファイル:
MZPlatformユーザー会サイト管理者テーブルサブセットフィルタで,メソッドでは用意されていない特殊な検索を行う際にはメソッド「列データの正規表現で行を選択する(int,String)」を用います.そのメソッド実行後に,メソッド「選択データを取得する」を実行しますと,結果のテーブルデータを取得できます.
上述のメソッドの第一引数には検索対象の列インデックス,第2引数には,選択したい文字列を表現する正規表現を設定します.正規表現につきましては,詳細に説明する外部サイトがございますので,そちらをご参照下さい.
例えば,「指定した文字列を含む」を意味する正規表現は「.*XXXXX.*」,「指定した文字列を含まない」を意味する正規表現は「^(?!.*XXXXX).*$」です.ここで,XXXXXは指定文字列を意味しております.ご参考のため,サンプルアプリケーションを添付いたしますのでご参照ください.
添付ファイル:
MZPlatformユーザー会サイト管理者Webアプリケーション用の設定をしていただくと、所定の位置にapplicationsフォルダが作成されます。その中にあるWindowSample.mzaxが画面を切り替える機能のサンプルとなっております。
Webアプリケーション用の設定方法は、配布用のZIPファイルを展開したMZ Platform Servletフォルダ内のReadMe.txtに書かれています。設定が問題なく完了しましたら、Webブラウザで下記のアドレスを指定するとサンプルの動作を確認できます。
http://<サーバのアドレス>:8080/mz/WindowSample.doサンプルがあるapplicationsフォルダの位置は、準備したサーバにTomcatをインストールした場合は、下記になります。
(Tomcatのフォルダ)\webapps\mz\WEB-INF\applicationsMZPlatformユーザー会サイト管理者以前メールでご相談いただいた内容に対して、テーブルサブセットフィルターを用いてテーブル内の文字列を検索して行選択する処理をご紹介しました。
残念ながら、現在のテーブルサブセットフィルターの機能としては、文字列が完全に一致しない場合に柔軟に判定する機能が用意されておりません。
そのような処理を実現する場合には、アプリケーション側でテーブルに含まれている全ての文字列をあらかじめ半角英数小文字や全角平仮名に変換しておき、検索用の文字列を半角英数小文字や全角平仮名に変換してから、テーブルサブセットフィルターにテーブルを設定して文字列検索による行選択を実行するように処理を構築することで対応可能です。
この文字列変換機能は、文字列格納変数のメソッドとして提供されています。
ただし、メソッドで対応可能な変換は、全角の英数字を半角小文字に変換することと、全角半角の片仮名を全角の平仮名に変換することに限定されます。
変換処理のサンプルアプリケーションを添付しますので、必要に応じてご利用ください。なお、掲示板へのアプリケーション添付については、右側の注意事項にありますように、ZIPファイル等に圧縮してから添付するようにお願いします。
添付ファイル:
MZPlatformユーザー会サイト管理者ご不便をおかけして申し訳ありません。
現在の環境では質問者へのメール通知が利用できず、ご不便をおかけしていることは認識しております。引き続き、良い解決方法がないか検討いたします。MZPlatformユーザー会サイト管理者ご要望をお知らせいただき、ありがとうございます。
そのような機能追加は可能と思いますので、検討してみます。MZPlatformユーザー会サイト管理者HTML表示パネルは、Webブラウザの動作を再現するためのコンポーネントではないため、意図する動作を実現することは難しいと思います。
代わりに、外部プログラム通信を用いた方法で動作が実現できたのでお知らせします。外部プログラム通信のメソッド「標準のブラウザでWEBページを開く(String)」の引数に、「mailto:」の文字列を指定すると標準のメールソフトが起動します。参考までに、作成したアプリケーションを添付します。引数の文字列は文字列格納変数を用いて動的に作成することが可能です。
注意点としては、こちらの環境ではccやsubjectなどのオプションをつなぐときに&ではなく&を指定しないと正常に表示されませんでした。また、こちらはメールソフトによるみたいですが、bccは表示されませんでした。ご利用の環境での挙動をご確認いただいて記述を調整してみていただければと思います。
- この返信は、 MZPlatformユーザー会 により、 9 年, 6 ヶ月 前 に編集されました。
- この返信は、 MZPlatformユーザー会 により、 9 年, 6 ヶ月 前 に編集されました。
添付ファイル:
MZPlatformユーザー会サイト管理者テーブルサブセットフィルタで検索後の結果(選択データ)を
再度テーブルサブセットフィルタの全体データに設定し,
その後にテーブルサブセットフィルタから選択データを取得しテーブルに
設定しておりますが,
最初の選択データをどこかに確保しておき,テーブルに設定する
ようにしますと,お望みの処理になると存じます.MZPlatformユーザー会サイト管理者テキストフィールドに一文字入力するごとに,
データ更新イベントが発生し,毎回データベースの検索が実行され,
反応が悪くなってしまうということと理解致しました.幾つか改善策が考えられますが,例えば,
一文字ではなく複数文字入力された際に検索を実行するように
処理を修正されてはいかがでしょうか.文字列格納変数にテキストフィールドの文字列を設定し,
メソッド「文字列の長さを取得する()」を実行することにより,
文字数を取得することができます.
その文字数を比較演算コンポーネントを用いて,指定の文字数以上
であることを判定し,処理を実行します.また,他の方法としましては,ある程度文字列が入力され,
「Enter」キーが押された場合のみ検索するという方法も考えられます.テキストフィールドのデータ更新イベントではなく,
アクションイベントを使用し,イベント番号0を指定することにより,
「Enter」キーが押された場合のみ,処理を実行することが可能です.以上,ご検討をよろしくお願い申し上げます.
MZPlatformユーザー会サイト管理者当方で試してみましたが,状況を再現できませんでした.
お使いのSQL文,テーブル,または,MZプラットフォームからの検索の
手順について,もう少し情報をご連絡いただけますでしょうか.MySQLでdate(フィールド名),time(フィールド名)を使用し,
例えば,Select date(フィールド名), time(フィールド名) from テーブル名
というSQL文を実行した場合,検索結果として,
MySQLのDATE型(日付のみ),TIME型(時刻のみ)のテーブルが
返ってきます.MZプラットフォームでこのテーブルを受け取った際には,
両方の列がDate型(日付型=日付と時刻の両方を含む)に自動的に変換された
テーブルデータが取得できるはずです.添付いただきましたアプリケーション画面の画像を拝見しますと,
文字列データ(java.lang.String)がバイナリ型等([B)の列に設定できない
とのエラーが表示されております.
通常,上述のように文字列型ではなく,Date型(日付型)のデータとして
取得されるはずです.お手数をおかけし申し訳ございませんが,
作成中のアプリケーションにつきまして,特にフィールドの型に関係する
処理についてご確認いただき,再度,ご連絡いただければと存じます. -
著者投稿