作成した返信
-
著者投稿
-
MZPlatformユーザー会サイト管理者
もちろん可能です。これまでの情報で作成できますので、ご検討ください。
例えば、CSVファイルを読み込んで、それから機番を選択するという二段階の処理が必要な場合、いくつかの要素を検討しないといけません。ファイルをダイアログで選択するのか、特定のキーワードからファイルパスを合成して自動で読み込むのか、読み込んだCSVファイルに含まれる機番をコンボボックスで表示するのか、機番数が多すぎて選択が難しければ絞り込む方法が必要とか、いろいろありますので、まずはご検討ください。
ご不明な点は、要素ごとに切り分けた技術的な質問として掲示板にお書きください。
MZPlatformユーザー会サイト管理者解釈はそれで正しいと思います。
添付のファイルは処理に問題があったので、修正したものを添付します。マップを空にするのは繰返し前に一度だけで、繰返しの中で空にすると、最後のリストしか登録されないことになります。
ボタンを押してマップを作成した後で、中身を確認するための処理も追加しておきました。
MZPlatformユーザー会サイト管理者いただいた情報をもとに、サンプルを作成しましたので添付します。ZIPファイルを展開してビルダーで確認しながら下記の解説をご覧ください。
実行して「変換」ボタンを押すと、CSVファイルの内容をイメージした元テーブルから、ガントチャート用に変換したテーブルとガントチャートが表示されます。変換方法は、機番ごとに部分テーブルを抽出して緑の列の1と0をそれぞれ「稼働」の開始と終了と考えて、ガントチャート用のテーブルに変換します。
部分テーブルの抽出にはテーブルサブセットフィルターを使います。その動作確認としては、「機番リスト作成」ボタンを押してから横のコンボボックスで機番を選択すると部分テーブルが下に表示されます。
「変換」ボタンの方は、すべての機番に対して部分テーブルを作成して、一度でガントチャート用のテーブルを作成します。
これは処理の一例ですが、今のところご希望の処理を実現するためにはこのような複雑な処理を記述する必要があります。ご不明な点があればお問い合わせください。
- この返信は、 MZPlatformユーザー会 により、 6 年, 2 ヶ月 前 に編集されました。
添付ファイル:
MZPlatformユーザー会サイト管理者後ほど該当箇所に回答を記入しますので少々お待ちください。
MZPlatformユーザー会サイト管理者「グラフ化.mzax」のアプリでは、画面部品のテーブル上にデータがあります。画面部品のテーブル上のテーブルデータは、明示的に削除しないとデータが残り続け、アプリケーション保存時にもデータが含まれます。
MZPlatformユーザー会サイト管理者サンプルのテーブルに特に意味はありませんが、SQL検索結果のテーブルをイメージしています。列幅を指定する対象のテーブルです。それに対応した列幅リストはサンプルの開始イベントで起動されるサブルーチンの中で作成されており、作成後は変数内(PCのメモリ上)にのみ存在します。PCのメモリ上にのみ存在するので、アプリ終了時には消失します。これはマップ固有というより変数全般の話になります。列幅リストの作成処理をアプリ内に埋め込んでいるのが一つ目のサンプルで、列幅リストの情報を文字列としてデータベース側に保存する例が二つ目のサンプルになります。
ご紹介した内容はあくまでも一例ですから、抽象的ですし完全に理解するには専門的な知識が必要かもしれませんので、ご自身が理解しやすい方法でお考え下さい。
MZPlatformユーザー会サイト管理者はい。添付したサンプルはリストですが、ツリーのノード名を用いて同様の取得が実現できると思います。
下記、追加情報です。テーブル名と列幅リストの組をアプリケーション内で作成せずに、こちらもデータベースのテーブルに保存する場合の方法について検討しました。
列幅リストはテーブルごとに長さが変わると思いますが、列幅リストをカンマ区切りの文字列として表現して、単一の文字列としてデータベースのテーブルに保存することができます。つまり、データベースのテーブルにはテーブル名と列幅リスト文字列の組が保存されます。そのように表現された文字列は、カンマを用いて分割してリストデータに変換することができます。あとは前回と同様の処理になります。
この方法で前回のサンプルを修正したものを再度添付します。
添付ファイル:
MZPlatformユーザー会サイト管理者下記回答になります。サンプルアプリのZIPファイルを添付しますので、展開してビルダーで開きながら説明をご覧ください。
複合コンポーネントの中のイベント処理から上の階層に処理を渡すためには、メソッド起動で複合コンポーネントそのものに接続して、「イベントを伝播させる」か「イベント番号を指定してイベントを伝播させる」を起動します。このとき、引数のイベントは取得方法をイベントにします。
複合コンポーネントの中で上記のようなメソッド起動を作成すると、上の階層で複合コンポーネントのイベント処理追加のメニューにそのイベントが表示されるようになります。あとはそのイベント処理を追加して、必要なメソッド起動を作成します。
複合コンポーネント内部でボタンを複数作成して処理を分けたい場合には、ボタンのアクションイベント処理の中で複合コンポーネントの「イベント番号を指定してイベントを伝播させる」を起動し、ボタンごとにイベント番号を割り当てます。上位階層では複合コンポーネントにアクションイベント処理を追加し、メソッド起動に対してイベント番号を設定することでボタンごとの処理を実現できます。この場合は、アクションイベントとイベント番号の組み合わせで処理を渡すので、文字列等を渡すことはできません。(サンプル中のテスト用1が対応)
もし、ボタンの文字列を上位階層に渡したい場合は、ボタンのアクションイベントから直接上位に渡さずに、イベント生成コンポーネント(処理部品>イベント)を使います。イベント生成はすべてのイベントを生成できるので、どのイベントを使うか迷うかもしれませんが、ここではボタンの文字列をデータ生成イベントで上位に渡すことにします。(サンプル中のテスト用2が対応)
ボタンのアクションイベント処理でイベント生成のメソッド「データ生成イベントの発生」を起動し、引数にボタンの文字列を指定します。上位でイベント番号を用いた分岐が必要であれば、番号も指定します。そして、イベント生成のイベント処理で対応するイベント(ここではデータ生成)を追加して、その中で複合コンポーネントの「イベントを伝播させる」を起動します。メソッド起動で発生させたイベントに対応したイベント処理に接続しないと正常に動作しませんのでご注意ください。あとは上位階層で複合コンポーネントにデータ生成イベント処理を追加して、ご希望のメソッド起動を記述します。イベントに含めたボタン文字列は、メソッド起動の引数でイベント内包のイベント対象データとして利用することが可能です。
説明が長くて複雑ですので、何かご不明な点があればお問い合わせください。
添付ファイル:
MZPlatformユーザー会サイト管理者実現したい処理については理解できたと思いますので、回答します。実現方法の選択肢が複数ありまして、すべて説明すると逆に難しそうなので、その中の一例としての紹介になります。
まずは、検索結果のテーブルに対する列幅を指定しようとすると、必要な情報は列幅のリストになります。表示したいテーブルの列数がすべて同じであれば、テーブル名と複数の列幅の値で構成されるテーブルを準備しても良いですが、おそらく各テーブルの列数が異なると思いますので、列幅のリストを複数管理する必要があります。もし、各テーブルと列幅リストの組み合わせを順番で対応して良ければ、列幅リストのリストとして管理しても良いですが、各テーブルの名前と列幅リストの組を管理したければ、マップ格納変数を用いる方法があります。
また、そのようなテーブル名と列幅リストの組をどこに保存するかも選択肢が複数あります。もし、それらを作成する処理をアプリケーション内に記述しておいてよければ、添付ファイルのような記述で実現可能です。参考にしていただき、ご不明な点があればお問い合わせください。
添付ファイル:
MZPlatformユーザー会サイト管理者残念ながら、現在はこの形式のCSVファイルからの簡単な分類機能はありません。MZを用いた実現の方針としては、CSVファイルから手作業で分類している作業を、地道にMZアプリ上の処理で置き換えることになります。
例えば、手作業ではこのCSVファイルから開始と終了の時刻はどのように抽出するでしょうか。また、機番別の分類とはどのようにするでしょうか。ガントチャート用データを作成するためには、元のCSVデータから項目名・系列名・開始日時・終了日時の列を持つテーブルデータに変換する必要があります。その作業手順を明確化した上で、それをMZアプリ上の処理として実現可能かをご質問ください。
追加情報としては、エクセル連携のサンプルアプリでは、テーブルデータからガントチャート用データへの変換処理が少々複雑で、ご自身で修正することが難しいと思います。もう少しわかりやすいサンプルとして「グラフ化.mzax」がありますので、こちらもご覧ください。こちらのサンプルでは、テーブルデータからガントチャート用データへの変換に複合コンポーネントを使用して、列名指定での分類をするようになっているので、対象となるテーブルデータと列構成が変わっても、理解と修正がしやすいと思います。
-
著者投稿