マトリックス型の表の表示のさせ方
Magic初心者です。
ふたつのテーブルを使って、マトリックス型の登録画面を表示させる方法がわからないので、どなたかご教示ください。
(例)
① 品物マスタ
品番 | 品名 |左右区分
――――――――――――――
H001 | DD-1 |右
H002 | DD-1 |左
H003 | DD-2 |右
H004 | DD-2 |左
② 登録情報(タイプ設定)・・・登録番号:023とします
登録番号|行番号 |タイプ
――――――――――――――
023 |01 |タイプA
023 |02 |タイプB
023 |03 |タイプC
③ タイプ別数量登録画面
登録番号|品番 |品名 |左右区分|タイプA|タイプB|タイプC
―――――――――――――――――――――――――――――――――
023 | H001 |DD-1 |右 | 1 | 1 |
023 | H002 |DD-1 |左 | | |
023 | H003 |DD-2 |右 | | | 2
023 | H004 |DD-2 |左 | | |
①と②のテーブルの全レコードをつかって、③のようなマトリックス型の登録画面を作りたいのですが、
こういった表の表示のさせ方がわかりません。
・ユーザーは、この画面では数字だけを入力します。
・①のマスタ情報はあらかじめ全件表示させたいです。
・②のレコード数は登録番号によって変わります。
また、③の表に入力して登録した時に、実際は④のような形のテーブルに登録させたいと考えています。
④ 実際のテーブル登録情報
登録番号|行番号|品番 | タイプ | 数
――――――――――――――――――――――
023 |01 |H001 | タイプA | 1
023 |02 |H001 | タイプB | 1
023 |03 |H003 | タイプC | 2
見せかけの表と実際の登録テーブルの形が異なる場合にどうしたらよいかについても教えていただきたいです。(問いがふたつあるので、別の投稿にした方がよいでしょうか?)
以前にMagic社の方と打ち合わせをさせていただいたときに、この件について世間話程度にお聞きしたのですが、「実現できなくはないですが、簡単ではないです」と言われ、初心者の自分が考えても無理だと思い、こちらに投稿させていただきました。どうぞよろしくお願いいたします。
-
おそらく、SQLを組むしかないと思います。(xpaの標準ではできないと思われます)
①と②は、どのカラムでリレーションが張られているのでしょうか?
②のデータが縦持ちなのに対し、③では横持ちになっているので、
そのような変換するSQLを組むしか実現方法はないです。
ちなみに、DBMSは何を使っていますか?
-
こんにちは Puです
良くやるパターンですが
入力用のwork table(memory)を作成し
登録時にトランザクシヨンにばらして登録すれば簡単なのでは
memory work
seq(隠し)、登録番号、品番、品名(参照)、左右区分(参照)、タイプA、タイプB、タイプC
------------------------------------------------------------------------------------------------------------------------------
登録イベントでバッチタスクをcall
入力用memory work順次readしてタイプに数値が入ってるか判断し
ばらしてトランザクションデータ(実際のテーブル登録情報)を登録
でわ~でわ~
-
OBRさん
コメントいただきありがとうございます。標準では難しいのですね。
それがわかっただけでもありがたいです。Magic上でSQLを組んだことがないので
まずそこからやってみようと思います。①と②は、カラムでリレーション・・・というのではなく、
②の登録情報の内容にかかわらず①は常に全件表示させたいと考えています。DBMSはOracle11gを使用しています。
Puさんコメントいただきありがとうございます。
メモリテーブルを使って、そこからイベント→バッチタスク実行でひとつずつ
実際のテーブルに登録していくんですね。勉強になります。
まだメモリテーブルを使ったタスクを作ったことがないので、タスクを作ってみます。
おふたりともご丁寧にありがとうございます。本当に初心者で、勉強しながらやっているので解決できたかどうかというのがここにすぐには書けそうにないのですが、もし解決できたらまたここに結果を書かせていただきます。
-
>①と②は、カラムでリレーション・・・というのではなく、
>②の登録情報の内容にかかわらず①は常に全件表示させたいと考えています。なるほどです。
③のタイプA~Cが、入力する項目ですか?
これらの項目は、②の登録番号によって、個数が変わってきますか?(項目は可変なのか、固定なのか)
(例えば、登録番号001のときは、タイプA~G)もし可変ならば、結構厄介だと思います。
Puさんがおっしゃる通り、入力のメモリーテーブルを作るのがよくやるパターンですが、
そのメモリーテーブルに、タイプのカラムを何個作成するかは、事前に決めておかないとxpaは難しいです。
xpaはデータありきで、開発するので。私も同じことに遭遇しました。
項目が年月で、条件によって、3年分とか5か月とかに項目を可変にしてほしいという要望でした。
この条件が無限にあるのは対応できないので、
仕様として2年までしかできませんと決めて、24個(24か月分)のカラムを作り、あとは表示・非表示で対応しました。 -
OBRさん
コメントありがとうございます。
>③のタイプA~Cが、入力する項目ですか?
>これらの項目は、②の登録番号によって、個数が変わってきますか?(項目は可変なのか、固定なのか)
>(例えば、登録番号001のときは、タイプA~G)はい、おっしゃるとおりです。タイプA-Cの欄に数を入力していきます。
そしてタイプの数は可変です。
カラムの数については、可変は難しいというようなことをMagic社の方も
おっしゃっていたので、MAX数で設定するしかないかと考えていました。
非表示にできるのであれば、見た目は気にならないですね。ISHIJIMAさん
コメントありがとうございます。皆さんおっしゃるということは、
こういうときにメモリテーブルを使って対処するというのは一般的なんですね。
なんとかメモリテーブルを使って実現できるよう頑張ります。
サインインしてコメントを残してください。
コメント
5件のコメント