フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
いろいろ方法はあると思いますが、例えば以下のような方法が考えられます。
空の値が含まれるリストを与えても意味のある数字の合計を計算してくれるコンポーネント「基本統計処理(数値)」がありまして、追加メニューの「処理部品>統計」で選べます。
ご希望の処理を実現するには、テーブルサブセットフィルタを使い、列データの文字列で特定の工程だけの行が含まれる部分テーブルを作成します。その部分テーブルの工数の列データをリストで取得して、基本統計処理(数値)に渡して合計を計算すると、中に空の要素が入っていても意味のある数字だけで工数の合計を計算してくれます。
基本手統計処理(数値)の使い方のところだけ、サンプルをZIPファイルで添付します。
添付ファイル:
MZPlatformユーザー会キーマスターそのようなメソッドはありませんが、正規表現を使いこなすとそのような選択が可能です。添付のZIPファイルにサンプルとCSVファイルが含まれていますので、お試しください。
サンプルアプリでCSVファイルを読み込み、正規表現のフィールドに「切削」と指定して行選択すると、2行選択されます。
一方、正規表現のフィールドに「^(?!.*切削).+$」と指定して行選択すると、切削と書かれている以外の14行が選択されます。正規表現を使いこなすことはかなり難しいですが、「切削」のところを入れ替えれば同様の選択が可能と思います。
添付ファイル:
MZPlatformユーザー会キーマスターコマンドの送信後、データを受信したらシリアル通信コンポーネントからデータ生成イベントが発生します。そこでの処理を工夫すると、次のコマンドを送信することが可能と思います。例えば文字列格納変数でどのコマンドを送信しているときかで処理を分岐して、1つ目なら2つ目のコマンド送信、2つ目なら3つ目、3つ目なら何もしないなどが考えられます。やり方はいろいろあると思いますので、まずはご自身でお考えいただけますでしょうか。
MZPlatformユーザー会キーマスター簡単かどうかわかりませんが、テーブルコンポーネントではなくテーブル格納変数コンポーネントにテーブルデータを設定しますと、メソッド「moveColumn(int,int)」を使用できます。このメソッドは、列位置の指定で列の移動が可能です。
MZPlatformユーザー会キーマスターテキストエリアに限らず、スクロール位置の指定はメソッド呼び出しが必要です。
MZPlatformユーザー会キーマスターテーブルに対してaddColumnDataメソッドで列データとしてリストを渡すと、そのリストの要素数がテーブルの行数と異なるときにエラーとなります。お渡ししたサンプルではリストの要素数と行数が一致するのでエラーが出ませんが、リストの要素数が変わればエラーとなります。
まずは、実現したい処理でaddColumnDataが必要かどうかをよくご検討ください。もし一列のテーブルを作成したいのであれば、最初にテーブルの全行列を削除してからリストの要素数の行を追加して、それからaddColumnDataでリストを渡せば大丈夫と思います。複数列のテーブルで各列の行数が異なる状態であればかなり手間がかかりますし、手間をかけて作ったそのテーブルを使った処理はさらに面倒になります。
MZPlatformユーザー会キーマスターサンプルを拝見しまして、まずは型式リストの要素の重複を排除する部分については、添付のように繰り返し制御を使わずに簡単に実現できます。この型式のリストを使った処理(例えばテーブルサブセットフィルタを使用する処理)は、繰返し制御が必要になると思います。
なお、リスト要素の重複については、元のテーブルにあるように、ある列(リストデータ)に「0,0,1,1,1,2,2,2,…」と同じ文字列等(これを要素と呼びます)が含まれている場合に、要素が重複していると呼びます。このような要素の重複を排除するとは、「0,1,2,…」のようなリストを作成することを指します。数学的には元のリストの「集合(Set)を求める」と呼びます。
実用的には、データに含まれている番号等からどこかのプルダウンの選択肢を作成したり、今回のようにデータに含まれている番号等に関して抜け漏れなく処理を実施するために使います。
添付ファイル:
MZPlatformユーザー会キーマスター残念ながら、ご質問の説明がわかるようでよくわかりません。もう少し説明をお願いできますでしょうか。
型式が複数あってその数が変わる以上、どのような方法でも「繰返し制御を使わずに」は無理な感じがします。現状どのように処理しているかがこちらではわかりませんので、サンプルアプリ(の圧縮ファイル)等を添付していただけたら何か助言ができるかもしれません。
ご質問を理解できていないですが、回答になるかもしれないことを以下に書いてみます。例えば、抽出に用いる型式のリストに含まれる要素を重複のないようにすることは可能です。あと可能性としてテーブルサブセットフィルタの使用法で、もしかしたら正規表現で行を選択せずに文字列で選択すれば速くなるかもしれません。
MZPlatformユーザー会キーマスター対象データはCSVファイルでしょうか、データベースでしょうか。元がデータベースであれば、先ほどのような抽出はSQLでできますので、わざわざMZで処理する必要がありません。CSVファイルであれば、やはりテーブルサブセットフィルタで型式ごとに抽出するのがよいと思います。
どうしても記入済みの行位置を取りたくて型式の数が変わるのであれば、リストやテーブルに型式分の要素や列を追加して、行位置を入れておけばよいと思います。
MZPlatformユーザー会キーマスター残念ながら、テーブルコンポーネントにご希望の機能を持つメソッドはございません。
aとbとcでそれぞれテーブルの何行目まで記入したかを知りたいのでしたら、それぞれに整数格納変数コンポーネントなどを準備して、記入した行位置を記録する方法があると思いますが、いかがでしょうか。ところで、指定した列の値で行を選択して部分テーブルを抽出するテーブルサブセットフィルタコンポーネントというものがありますので、aとbとcに関するテーブルを別々にメソッドで抽出することは可能です。おそらく最終的に欲しいテーブルにする処理方法は複数考えられますので、いろいろご検討いただいてご不明な点があればお問い合わせください。
-
投稿者投稿