ガントチャート作成時のテーブル(セル)への入力方法

MZ Platformとは 掲示板 MZプラットフォームユーザー会掲示板 ガントチャート作成時のテーブル(セル)への入力方法

6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #7758
    ampay3
    参加者

    いつもお世話になっております。

    現在、お客様から注文頂いた製品について材料手配日~先方納入日までをそれぞれ入力し、ガントチャートにて表示させるシステムを作成しております。※添付画像参照

    その際、各工程の具体的な時間表示については省略し、テーブル上の列の表示属性(日付)は日付のみ表示させるようにしております。

    Lesson11の内容を参考に一先ずテーブルのセルに入力した日時からガントチャートを生成するところまでは出来るようになったのですが、このテーブルへの入力部分をカレンダーの日付を選択するといった別の形で入力できるようにすることは可能でしょうか?

    恐らく本来のガントチャートの用途からは外れていると思いますが、何卒ご教示いただけましたら幸いです。

    ※説明が上手くできず申し訳ありません。

    • このトピックはampay3が1ヶ月、 1週前に変更しました。
    #7761
    MZPlatformユーザー会
    キーマスター

    ご連絡ありがとうございます。
    まず、カレンダー形式で日付選択ができるコンポーネントとして[日時選択]、[日時選択パネル]があります。これらのコンポーネントから、日時を取得して[テーブル]のセルに設定することができます。

    また、L11を参考にガントチャート用のテーブルを作成していただいていますが、このガントチャート用データの並びは実運用では使いにくく、[グラフデータ作成]複合コンポーネントを使用して一般的なデータの並びの表でも表示できる方法をお勧めしております。
    こちらは、”MZPlatform\4.0\AP_DATA\Sample\グラフ化.mzax”および、
    『MZ Platformグラフ化複合コンポーネントチュートリアル』(WEB資料)
    https://ssl.monozukuri.org/mzplatform/docs_web/mztutorialgraphing.htmlをご覧ください。

    添付のファイルでは、画面に[日時選択パネル]を配置、また、[ボタン]を押すと[日時選択ダイアログ]が表示されるようになっています。ガントチャート表示の処理は上記ご紹介したサンプルの通りです。コメントを付けてありますので、どうぞご覧ください。
    [イベント生成]コンポーネントやイベント番号を使って、エラー回避をしているので、少し複雑になっていますが、基本的には日付を取得したら、テーブルの選択されているセルに設定するだけです。イベント番号の設定については、チュートリアルL8内の記述をご参照ください。
    [日時選択]のパネル、ダイアログの時間表示を隠す場合はコンポーネント属性設定で「TimeInvisible」の項で「true」を選択します。時間データが削除されるわけではありません。
    なお、MZのアプリケーション内[テーブル]へのデータ保存だけでなく、MZ外からデータ読込・保存も幾つか方法がありますので、どうぞご検討ください。

    以上、ご不明な点がございましたら、再度ご連絡いただければ幸いです。
    今後ともどうぞよろしくお願い申し上げます。

    添付ファイル:
    #7781
    ampay3
    参加者

    いつもお世話になっております。
    また、前回のご相談より返信に時間がかかってしまいまして申し訳ございませんでした。
    大変助かりました。ご回答いただきまして誠にありがとうございます。

    その後上記ご提案頂いた方法で、MZアプリ内のテーブル「セル」への日付入力は出来るようになりました。
    しかし、実際に運用方針を決めている中で遠方の他の事務所にもアプリを使用してもらうことになり、そうなると外部からアクセスする仕様上ガントチャートを生成する為のデータ呼び出し元はMZ外のデータベースから且つそちらにも都度データの書き換えや追記が必要になりました。

    そこでSQLサーバー内にてMZアプリ内テーブルと同様の内容(※各工程1カラム毎に区切り、そのセル1個ずつ入力内容を日付・時間(YYYY/MM/dd hh:mm:ss)で入力しています。)でテーブルを作成いたしました。

    ただ、こちらのSQLサーバー上のテーブルを「グラフデータ作成(複合)」や「ガントチャート」コンポーネントでメソッドを設定して呼び出そうとするとどうしてもアプリ内テーブルのように複数項目を読み取ったガントチャートが生成されません。(図1)
    ※アプリ内テーブルから読み取った場合は行数が14行ほどになってもきちんと生成されております。(図2)

    やはり本来こうした複数行をガントチャートとして生成するといった使用方法が適していないのでしょうか?
    また、現状のテーブル構造でも生成可能でしたら恐れ入りますが再度ご教示いただけましたら幸いです。

    長文且つ分かりにくい説明となりまして誠に申し訳ありませんが、何卒ご回答の程宜しくお願い申し上げます。

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

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

    1)日付の入力について解決したとのこと、安心いたしました。

    2)2番目の画像のデータベース内のテーブルから取得されたテーブルデータは、ガントチャート用データ(左端に項目列、以降2列一組で日付または文字列型の列、系列名は2列一組のうち左側の列名が使用される。)と近い構造のテーブルにも見えるのですが、その場合は[グラフ作成]複合コンポーネントを使わず、チュートリアルL11と同じように[ガントチャート]にテーブルデータを設定して表示されるかとも思います。

    ただし、L11と同じ処理方法で表示する場合には
    [1]日付型データ以外にも他の情報が入っているようにも見えますし、そのため思わぬエラーが発生する可能性はあります。
    [2]タスク名を別テーブルで設定しなければなりません。

    考えられることとしては
    ・データベースのテーブルデータ取得のSelect文を変更して、表示したいテーブルデータだけを取得する
    ・一旦データベースからテーブルデータを取得後、[テーブル格納変数]に格納し、列を指定して抜き出したりあるいは不要列は削除して、表示したいテーブルデータに整える
    の2つの方法があるかと思います。

    そこで、質問なのですが、
    ➀「データベースに格納されているテーブルはチュートリアルL11で示されているテーブルに近い構造で作成し、それをSelect文でテーブル全体を取得している」という理解でよろしいでしょうか。
    ➁Select文を変更し必要なデータを絞り込んで取得するのと、ある程度大きくテーブルを取得しMZ上で取捨選択するのとでは、どちらが今後の開発で役に立ちそうでしょうか。

    以上、ご面倒をお掛けいたしますが、ご返信頂ければ幸いです。
    どうぞよろしくお願い申し上げます。

    #7785
    ampay3
    参加者

    ご返信いただきまして誠にありがとうございます。

    まず、そもそもの話ではあるのですが、SQL上のデータテーブルに切り替え後からガントチャートを生成する場合、通常のガントチャートコンポーネントでは自身の意図する凡例や要素が設定できない物だと思い込んでいたため、前回ご教示いただいた複合コンポーネントによるガントチャート生成方法を参考にしておりました。
    また、開発中のシステムについては仕様上アプリ起動時に左端の要素(注文番号)と最上部のタスク名(実際には「〇〇日」といった名称ですが)が表示されることが必須なため、引き出し元のSQLデータテーブルは出来る限りアプリ内テーブルと似た形(アプリ内テーブルにある要素をSQLテーブルのカラムに配置すればその部分を凡例として拾ってくれるかと思っていました)になるように何とか調節しておりました。分かりにくく申し訳ありません。

    話が逸れましたが、いただいた質問内容についてですが、

    ➀現在のSQL内にあるデータテーブル構造ですが、仰られている通り「L11で示されている基本形のテーブルに近い構造で作成し、そこからデータ取得する際にテーブル全体に対してSelect文で全て呼び出して」おります。

    ➁アプリ完成品を実際に使用する現場としては、各工程の日付更新によるガントチャートの進行具合を「分かりやすく見られる」ことを重視しているのですが、保持するデータ記録としてはガントチャートには直接表示する必要のない要素(材質や製品寸法)も保管しておきたいため、そう考えるとSelect文変更からの必要データ絞り込み後取得の方が今後の開発に役立つかと思っております。

    回答内容がズレていないか些か不安ですが、私の考えとしては以上になりますので、恐れ入りますがご確認いただけましたら幸いです。

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

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

    1)恐らく「select * from テーブル名」でデータを取得されていると推察します。 この*の部分をデータベース内のテーブルの列名に変え、例えば「select retsu1, retsu2, retsu3 from テーブル名」とすることで、必要なデータ列のみ取得することができます。
    テーブル列名が上記のようにアルファベットの場合、SQL文内に日本語列名を設定することもできますし、MZ上の[テーブル]にテーブル設定時にメソッド「行を追加する(PFObjectTable) ]で列名は残して行の内容を更新することもできます。
    例えば、
    ➀[テーブル]に一旦データベースから取得したテーブルを設定し、列名を日本語に変更する。以降、この[テーブル]へのテーブルデータ設定は以下の順で行う。
    ➁「全行を削除する()」
    ➁「行を追加する(PFObjectTable) ]

    2)ガントチャートのタスク名ラベルの設定について
    ガントチャートのタスク名設定はメソッド「タスク名をテーブルデータで設定する(PFObjectTable)」で行うのが良いかと思います。
    どのようなテーブルデータが必要かは添付の画像左下の[テーブル]をご覧ください。
    行数はガントチャート用データと同数ですが、列は項目列と2列1組のうち1列抜いたもの、つまり左端列を0番目と数えると「0,2,4・・・」番目を抜いた列になります。
    予め列数が確定されているのなら、例えば一行のタスク名を入力した[テーブル]を作って、画面上からは削除し、取得したテーブルの行数が分かったあと行とデータを必要数設定します。

    小出しになってしまい恐縮ですが、もし上記の処理でよろしければ簡単なサンプルでご提示できるかと思いますので、どうぞご連絡ください。
    まずは、上記1)と2)をご確認いただき、不明な点がございましたらご連絡ください。
    よろしくお願い申し上げます。

    添付ファイル:
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • このトピックに返信するにはログインが必要です。