MZPlatformユーザー会

フォーラムへの返信

10件の投稿を表示中 - 501 - 510件目 (全781件中)
  • 投稿者
    投稿
  • MZPlatformユーザー会
    キーマスター

    下記回答です。

    1.テーブルにSQL文を記述して実行する際には、0列目にSQL文、1列目に実行時に発生するイベント番号を記入したテーブルを渡します。イベント発生時に処理を分岐したい場合には、別の番号を指定する必要がありますが、分岐が不要であれば常に0と記入しておけば良いです。

    2.MySQLコマンドラインクライアントでSQL文を実行する場合はセミコロンが必要ですが、MZでデータベースアクセスコンポーネント経由でSQL文を実行する場合はセミコロン不要です。これは仕様になります。

    返信先: 指定した文字列の連結について #5478
    MZPlatformユーザー会
    キーマスター

    今回は添付のMZアプリを開けましたが、MZASファイルのZIPファイルを添付するのはおやめください。こちらはMZのバージョンが異なると開けないタイプのファイルですので、MZAXファイルをお使いください。

    さて、2は列ではなく行位置の話ですね。問題は、繰り返し制御の「繰り返し処理を実行する」の引数の指定の仕方です。引数の説明を見てもらえばわかりますが、「開始値」と「開始値を含めるかどうか」の組み合わせで、「0」と「false」と書くと、最初の行を含めないという指定になります。もしかしたらこれは理解した上で、先頭行が「1」だと考えていることが問題かもしれません。行や列の先頭位置は「0」となりますので、お間違えの無いように。

    1はわかりにくいですが、列を追加するときに整数型にしていることが問題です。整数に変換できない文字列をセルに設定したときに、おそらく内部的に工程番号部分だけを見て整数に変換しているのだと思います。文字列型の列に変更すれば、正しく表示されます。

    修正版ZIPファイルを添付しましたので、ご確認ください。

    MZPlatformユーザー会
    キーマスター

    下記回答です。

    1.実際に確認していないので正確にはわかりませんが、接続したまま複数のクエリを実行して、最後に切断する方法は間違いないと思います。ただ、自動コミットのままで本当にそうなったでしょうか。単に最初のクエリでエラーが出たからということはないですか。そもそも、このように分ける必然性がよくわかりません。毎回コミットせずに、例えば複数のテーブルに対するクエリを一括で反映したいということでしょうか。
    なお、FAQにはトランザクションの話題が複数ありますので、下記リンク先をご覧ください。
    https://ssl.monozukuri.org/mzplatform/faq/faq/faq_technical/database/database_a51.html
    https://ssl.monozukuri.org/mzplatform/faq/faq/faq_technical/database/database_a40.html
    https://ssl.monozukuri.org/mzplatform/faq/faq/faq_technical/database/database_a73.html
    https://ssl.monozukuri.org/mzplatform/faq/faq/faq_technical/database/database_a27.html

    2.そういう切断方法も可能です。ダイアログのアクションイベント処理から呼び出します。また、エラーが発生しても必ず実行させるようにメソッド起動のFinally起動というものもあります。

    3.はい、それでよいです。ファンクションを使わずに直接呼んでも同じです。

    4.詳細には調べていませんが、これは特に違いはないと思います。必ず切断してから終了することが重要です。一点だけ、接続している時間が長いと、複数からの接続で同時接続数の問題が出るかもしれません。

    MZPlatformユーザー会
    キーマスター

    はい、可能です。
    システム情報コンポーネントに「システムプロパティを取得する(String)」というメソッドがありまして、引数に固定値の文字列「user.name」を与えると、Windowsにログインしているユーザ名が取得できます。

    システムプロパティでは他にもとれる情報がありますので、FAQの関連質問へのリンクを張っておきます。他の項目についての詳細は、Web検索で「Java システムプロパティ」を調べると情報が得られると思います。
    https://ssl.monozukuri.org/mzplatform/faq/faq/faq_technical/developer/developer_a5.html

    返信先: データの整理の方法 #5469
    MZPlatformユーザー会
    キーマスター

    質問1の内容がよくわかりません。親という表現はやめた方が良いと思います。
    基本的なことを説明しますと、左側の四角がコンポーネントの本体で、各コンポーネントに定義されたイベント処理につながる右側の四角は各コンポーネントが持つ機能(メソッド)の呼び出しです。前述の処理の順序を理解していれば、メソッド起動はそのときの値を返すと思えばよいです。

    質問2については、「Java 正規表現」をWeb検索してみてください。文字列のパターンを指定してマッチする行を選択しています。「.+」は任意の文字列を意味して、空文字列の行を除外する効果があると思います。

    返信先: データの整理の方法 #5467
    MZPlatformユーザー会
    キーマスター

    削除の条件についてのご質問にお答えする前に、後半の繰り返し制御について、というよりMZの処理実行順序について理解していただく必要がありそうです。

    基本的な処理の順序は、下記の3つです。
    1)イベント処理(赤丸につながった一連の起動メソッド)は上から順です。
    2)起動メソッドを実行したときにイベントが発生する場合は、そのイベント処理が終わってから次の起動メソッドに移ります。
    3)コンポーネント(左側の四角)の順番は、処理の順番と関係ありません。

    ここでは、サブルーチンと繰返し制御の実行の両方で必要なテーブルを作成しています。

    サブルーチンの方では、アクションイベント処理の中で全体テーブルからフィルタで部分テーブルを取得して、選択テーブルに設定した後で経過時間が入る列を追加します。最後の繰り返し制御の繰り返し処理を呼び出すと、指定した回数アクションイベントが発生します。そのイベント処理の中で、選択テーブルの各行に関してセルを比較して経過時間を計算して、最後にテーブルの経過時間のセルに値を設定します。

    この処理順序が理解できないうちは、適切に処理の追加はできませんので、がんばっていただくしかありません。

    返信先: データの整理の方法 #5464
    MZPlatformユーザー会
    キーマスター

    画面のテーブルであれば、特定行を削除するメソッドがあります。
    変数内のテーブルデータであれば、行を位置指定で削除するメソッドがあります。

    複数行の削除はないので、テーブルの各行に対して繰り返し処理の中で削除してください。ただし、繰り返し処理で前方から削除していくと後方の行位置がずれてしまうので、後方からの繰り返し制御にして後方から削除する必要があります。

    返信先: データの整理の方法 #5460
    MZPlatformユーザー会
    キーマスター

    エラーについては、メソッドの選択ミスです。前述のリンク先のFAQを見ていただくとわかりますが、「Calendarオブジェクトによる…」ではなく「Dateオブジェクトによる…」です。テーブルのセルに入っているような日時データまたは文字列は、内部的にはDateオブジェクトと呼ばれるものまたはそれに変換されて扱われます。

    処理についてもいくつか手を入れましたので、添付ファイルをご確認ください。日時比較は選択テーブル側の行に対する処理に変更していて、列を追加してそこに経過時間を入れています。

    繰り返し処理の中で現在の行と直前の行の日時を用いるので、テーブルの行位置指定で計算が必要になります。経過時間はミリ秒単位で取得されるので、それを必要な単位に変換する必要があります。

    返信先: データの整理の方法 #5456
    MZPlatformユーザー会
    キーマスター

    MZアプリのファイルについては、エラーを再現する部分を切り出したファイルをZIP圧縮して、この掲示板に添付ファイルとして貼り付けていただければ、こちらで内容を確認することは可能です。

    その場合でも、まずはどのような処理をしてどの時点でどのようなエラーが出るのかをご説明ください。エラーメッセージだけでも回避方法がわかる場合があります。

    返信先: データの整理の方法 #5454
    MZPlatformユーザー会
    キーマスター

    1つ目のご質問は、テーブルサブセットフィルターのメソッドで、列の値で行選択をすることで実現できたということですね。

    2つ目のご質問は、対象とするテーブルがどのようなデータで構成されているかで処理の複雑さが変わってきます。

    基本となる処理としては、ある作業者の作業だけが時系列に並んでいるとして、繰り返し処理で2行分のセルの値を使ってカレンダーで時刻の比較で経過時間を取得します。結果はテーブルに1列追加しておいてそのセルに入力していくと良いでしょう。経過時間の取得部分はFAQに同様の質問があるのでご覧ください。
    https://ssl.monozukuri.org/mzplatform/faq/faq/faq_technical/how_to_realized/how_to_realized_a64.html

    ただし、これだけだと最後の作業の経過時間が計算できない問題がありますし、途中で日付が変わっているとその部分で切らないといけません。対象となるテーブルを事前に整形する処理を入れたりして対処することになります。

10件の投稿を表示中 - 501 - 510件目 (全781件中)