過去の桐井戸端BBS (桐ver.8)
16947 メインフォームとサブフォームのリンクはどうして自動設定されるのでしょうか 二神 章 2002/08/11-23:01
例えば、50名の食事内容の嗜好(例:昼食に選択した食事内容を、めん類、丼もの、
パスタ、その他などと大まかに分類し一定期間の状況を記録していく)を一覧表で作成し、
個人の食事の選択状況が分かりやすいようにフォームをうまく作ってみたいのですが、糸口がつかめません。
おそらくサブフォームというものを理解すれば自分のイメージに近づくと思うのですが、
桐活用ガイドのフォームの定義と編集を読んでも、メインフォーム&サブフォームのリンクが
どうして自動設定されるのか、理解に苦しんでいるレベルです。
 50名の基礎データが入っているテーブル(氏名、ふりがな、性別、年齢、住所等)、
また、毎回のデータを入力するテーブルは、氏名、日付、食事内容、食事内容の大分類、
備考といった設定をしています。

16954 Re:メインフォームサブフォームのリンクとは MIT 2002/08/12-13:48
記事番号16947へのコメント
二神 章さん

私は桐のメインサブフォームを使った事が無いのですが
一般論として今回ご思案の2テーブルの関係について説明させて頂きます。

50名の基礎データが入っているテーブル
このテーブルが「親」になります。

毎回のデータを入力するテーブル
このテーブルが「子」になります。

親子としたのは「親」がいないと「子」は生まれないという意味からです。
また、1つの「親」で「子」は複数生まれる場合があります。
今回の事例では日々の食事内容がそれになります。

親子の絆が今回「リンク」と表現されている部分ですが
親子関係が正しく結びつく必要があります。
氏名でリンクすると同姓同名があった時、正しく結ばれません。
親を識別する為に「重複しない値」が親側に1つ必要です。
これは数字でも文字列でも重複しなければかまいません。
考えるのが面倒なら連続する数字(連番)で良いでしょう。

具体例としては

基礎データが入っているテーブルに
このテーブル内で重複しない値が入る項目(仮に数字で親番号)を1つ追加します。

毎回のデータを入力するテーブルにも上記で作成した項目と
同じデータ型の項目を1つ追加します(これも仮に数字で親番号)
(同じ項目名にしておくと後の設定が楽かと思います)

親子の絆、リンクは2つのテーブル間で親番号=親番号となるものになります。

記録されていくデータは

50名の基礎データが入っているテーブル
項目[親番号]には50行で重複しない値が入っている
1 太郎
2 花子
3 三郎


毎回のデータを入力するテーブル
項目[親番号]には同じ人が食事回数だけ同じ番号が複数行入っている

1 8月11日 めん類
1 8月12日 丼もの
2 8月11日 パスタ
2 8月12日 丼もの
3 8月11日 めん類
3 8月12日 パスタ

こんな感じになります。


メインサブフォームを作成する時、作成手順として先にサブフォームを
作成する事になるかと思いますが、
サブフォーム側は食事内容で複数行表示(一覧表、又は伝票)とした時、
これをまとめるグループとして先の親番号を指定します。

次にメイン側のフォームを作成する時、サブフォーム側の何とリンクするかの
指定でこの親番号を指定します。

最初にメインサブフォームは使った事が無いと書きましたが、
桐ではデータ量が多くなった時、こういったフォームだと応答性が悪くなるので
私は使わない事にしています。

いずれにしても、親子関係が正しく記録されておれば他のフォーム形式に変更しても、
あるいは異なるデータベースシステムに移行したとしてもデータが無駄になってしまう事はありません。

以上あまり的を突いていませんがご参考まで。MIT
16969 ありが 2002/08/13-23:04
記事番号16954へのコメント
MITさん、早速ご教示いただきありがとうございました。
おかげさまで頭のなかの霧が晴れてきました。(もとから靄っておりますが…)
グループの指定というものが理解できたので、あとはうまくいけそうです。

アクセスをかじってみても、そのたびに桐の魅力に引き戻されております。
かといって初級の域をでれないレベルなので、いつも教えてもらってばかりです。
これからも、よろしくお願いします。

16986 重ね重ねのお礼 二神 章 2002/08/14-17:59
記事番号16975へのコメント
いろいろありがとうございました。

今回のアドバイスで自身のイメージにそったフォームを作成することができました。
また、未知の設定に苦しむこともあるかと思いますが、性懲りもなく質問させて頂きますのでよろしくお願いします。

戻る