メインコンテンツへスキップ

マトリックス型の表の表示のさせ方

コメント

5件のコメント

  • OBR

    おそらく、SQLを組むしかないと思います。(xpaの標準ではできないと思われます)

    ①と②は、どのカラムでリレーションが張られているのでしょうか?

     

    ②のデータが縦持ちなのに対し、③では横持ちになっているので、

    そのような変換するSQLを組むしか実現方法はないです。

     

    ちなみに、DBMSは何を使っていますか?

  • Pu

    こんにちは Puです

    良くやるパターンですが

    入力用のwork table(memory)を作成し

    登録時にトランザクシヨンにばらして登録すれば簡単なのでは

    memory work

    seq(隠し)、登録番号、品番、品名(参照)、左右区分(参照)、タイプA、タイプB、タイプC

    ------------------------------------------------------------------------------------------------------------------------------

     

    登録イベントでバッチタスクをcall

    入力用memory work順次readしてタイプに数値が入ってるか判断し

    ばらしてトランザクションデータ(実際のテーブル登録情報)を登録

     

    でわ~でわ~

  • ouda

    OBRさん

    コメントいただきありがとうございます。標準では難しいのですね。

    それがわかっただけでもありがたいです。Magic上でSQLを組んだことがないので
    まずそこからやってみようと思います。

    ①と②は、カラムでリレーション・・・というのではなく、
    ②の登録情報の内容にかかわらず①は常に全件表示させたいと考えています。

    DBMSはOracle11gを使用しています。


    Puさん

    コメントいただきありがとうございます。
    メモリテーブルを使って、そこからイベント→バッチタスク実行でひとつずつ
    実際のテーブルに登録していくんですね。勉強になります。
    まだメモリテーブルを使ったタスクを作ったことがないので、タスクを作ってみます。


    おふたりともご丁寧にありがとうございます。

    本当に初心者で、勉強しながらやっているので解決できたかどうかというのがここにすぐには書けそうにないのですが、もし解決できたらまたここに結果を書かせていただきます。

  • OBR

    >①と②は、カラムでリレーション・・・というのではなく、
    >②の登録情報の内容にかかわらず①は常に全件表示させたいと考えています。

    なるほどです。
    ③のタイプA~Cが、入力する項目ですか?
    これらの項目は、②の登録番号によって、個数が変わってきますか?(項目は可変なのか、固定なのか)
    (例えば、登録番号001のときは、タイプA~G)

    もし可変ならば、結構厄介だと思います。
    Puさんがおっしゃる通り、入力のメモリーテーブルを作るのがよくやるパターンですが、
    そのメモリーテーブルに、タイプのカラムを何個作成するかは、事前に決めておかないとxpaは難しいです。
    xpaはデータありきで、開発するので。

    私も同じことに遭遇しました。
    項目が年月で、条件によって、3年分とか5か月とかに項目を可変にしてほしいという要望でした。
    この条件が無限にあるのは対応できないので、
    仕様として2年までしかできませんと決めて、24個(24か月分)のカラムを作り、あとは表示・非表示で対応しました。

  • ouda

    OBRさん

    コメントありがとうございます。

    >③のタイプA~Cが、入力する項目ですか?
    >これらの項目は、②の登録番号によって、個数が変わってきますか?(項目は可変なのか、固定なのか)
    >(例えば、登録番号001のときは、タイプA~G)

    はい、おっしゃるとおりです。タイプA-Cの欄に数を入力していきます。
    そしてタイプの数は可変です。
    カラムの数については、可変は難しいというようなことをMagic社の方も
    おっしゃっていたので、MAX数で設定するしかないかと考えていました。
    非表示にできるのであれば、見た目は気にならないですね。

     

    ISHIJIMAさん

    コメントありがとうございます。皆さんおっしゃるということは、
    こういうときにメモリテーブルを使って対処するというのは一般的なんですね。
    なんとかメモリテーブルを使って実現できるよう頑張ります。

     

サインインしてコメントを残してください。