みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
初心者です。
宜しくお願い致します。 Win10 FM19
テーブルAに約10,000個のデータが有りまして、これを例えば大分類、中分類、小分類・・・
と分類を付けて各データを記録したいと思います。
(テーブルA内で、値一覧を使って入力することも出来るのでるが、分類項目が多いため、他テーブルで作りました
動的値一覧を使って絞り込みながら項目の入力が出来たらと思いまして・・・)
テーブルBに分類項目を設定しまして、
テーブルBでは動的値一覧で項目を選択して分類の表示ができるようにすることまでは出来ました。
しかし、このテーブルBの動的値一覧をテーブルAで使いたいと思いましたが、上手くいきません。
テーブルAの各データに、テーブルBの分類の動的値一覧を使って
大分類 中分類 小分類 ・・・・
データ1 A あ ア ・・・
データ2 A あ イ ・・・
データ3 B う エ ・・・
データ4 B か キ ・・・・
のように、分類の詳細を付けたいと思います。
可能でしたら、御教授を宜しくお願い致します。
過去ログに有ります、Shin様はじめ皆様の、
動的値一覧のいくつかのサンプルを拝見致しておりますが、
活用できずに止まっております。
どうぞ宜しくお願い致します。
ファイルの構造を、具体的に示してください。
テーブルBのデータは、項目名の櫂層構造なのですか、それとも、テーブルAの各データに対応する分類名なのですか。後者でしたら、別のテーブルに項目名の一覧があるのですか。
項目分類も、テーブルの作り方にいろいろありますので、どのように作っているのですか。
Offline
Shin 様
説明不足で、大変申し訳ありません。
テーブルBは、階層構造の分類です。
例えば、
|ーー解剖学 細胞の構造ー |細胞膜
| |核
| |・・・・・
| 器官系 神経系 中枢神経系
| 末梢神経系 自律神経系 交感神経系
| 副交感神経系
| 体性神経系
| 消化器系 消化管 口腔
| 食道
| ・・・・・・・・
解剖生理学ーー| 肝胆膵
| 呼吸器系
| ・・・・・・
|
|ーー生理学 恒常性 体温調節
循環調節
循環器系の生理
・・・・・・・・・・
テーブル A
データNo 数字
データ テキスト (200~300文字程度)
大分類 テキスト
中分類 テキスト
小分類 テキスト
細分類1 テキスト
細分類2 テキスト
細分類3 テキスト
説明 テキスト
図表 オブジェクト
テーブルB
大分類 テキスト
中分類 テキスト
小分類 テキスト
細分類1 テキスト
細分類2 テキスト
細分類3 テキスト
テーブルBのみでは、動的値一覧の設定により、
解剖学/生理学→解剖学を選択→細胞の構造/器官系・・・を表示
→細胞の構造 を選択→細胞/核/・・ を表示
→細胞 を選択 →・・・・
と、動的値一覧の設定が出来ておりますが、
同じように、テーブルAの分類にテーブルBの動的値一覧の設定を出来たらと考えております。
拙い説明で、また勉強不足にて大変申し訳ありません。
ご多忙のところを誠に申し訳ありませんが、どうぞ宜しくお願い致します。
階層が深いですね、
普通の構造でしたら、
テーブルA テーブルB
大分類 = 大分類
で、中分類の値一覧を定義、
テーブルA テーブルB
大分類 = 大分類
中分類 = 中分類
で小分類の値一覧を定義を、としていき、細分類3では、大分類〜細分類2までの5条件でリレーションしていきます。そのリレーション先で値一覧を定義します。
項目側の構造を少し変えて、親子関係だけで2項目を入れていくような
解剖学→細胞の構造
解剖学→器官系
細胞の構造→細胞
細胞の構造→核
という構造にする方法もあります。これの方が構造は簡単になりますが、同じ単語が別の枝に現れないという条件が必要です。
また、この構造は、途中で交わる枝を作ることもできますが、これは関係ないでしょうね、
Offline
Shin様
ご多忙の中、早速のご連絡を誠にありがとうございます。
ご指摘通りで有りまして、階層が深くなるにつれまして、
ましてや、
単語レベルになりますと、途中で交わる(別の分類にも入る)場合もあります。
大変申し訳ありません。何とかなりますでしょうか?
どうぞ宜しくお願い申し上げます。
テーブルBで出来ていることと同様にテーブルAで設定すればいいのですよ。
テーブルAからテーブルB へリレーションして、その動的値一覧を設定。
これを階層を追って設定すればいいでしょう。
Offline
簡単なサンプルです。
レコードキーで管理していますので、同じ単項目名も別項目として扱えます。(主キーが同じなら、同じ項目と看做され、ツリーの結合ができます)
https://www.dropbox.com/s/hkmwztpc3v5ju … 2.zip?dl=0
Last edited by Shin (2022-08-27 17:30:19)
Offline
チポ 様
大変有難うございます。
ご指摘の通りと思いますが、
未だ十分にFMを理解できていないため、具体的な設定が出来ません。
宜しくお願い致します。
Shin 様
ご多忙の中を、サンプルを作成していただきまして、大変有難うございます。
只今、勉強させていただいております。
私には、高度な内容にて、驚くばかりです。
未だ十分に理解できておりませんが、サンプルにつきまして、3点お教えいただければ幸いです。
項目テーブルの主キーは計算値で指定されておりますが、
親キーの値の設定は如何にしたら宜しいでしょうか?
(全く、初歩的な質問で申し訳ありません。)
さらに、メインテーブルのrootと項目テーブルの親キーのリレーションされていますが、
個のrootの値はどのように設定されるのでしょうか?
また、階層の入力は如何にしたら宜しいでしょうか?
理解が不十分で、また勉強不足にて誠に申し訳ありません。
可能でしたら、御教授を御願い申し上げます。
構造の基本は、1単語にたいして、管理キーと、親キーを設定しておく、という構造です。それらのキーは、シリアルとかでもいいのですが、UUID を使っています。
最初に、root という一番大元のレコードを手動で作ります。親キーは要りません。
そのレコードの子レコードを、リレーションを使って作っていきます。ポータルの中へ次の階層の単語を入力するだけです。単語の親キー登録は、手動では行いません。その際に、親キーは自動的に登録され、主キーは計算式で自動設定されます。(ですから、親キーの登録を意識する必要はありません)
そこで作った単語のレコードへ移動すると、さらに次の階層の単語レコードが登録できます。その移動は、ポータルをクリックすれば移動できるように作ってあります。これで、いくらでも深い階層でも作れます。
また、同じ単語を登録した場合には、主キーを共通にする仕組みが組み込んでありますので、枝の合流ができます。
リレーションの考え方が十分でないと難しい構造でしょうが、作ろうとしているものが通常の項目リストでは対処することがほぼ不可能ですので、がんばって理解してみてください。
Last edited by Shin (2022-08-24 18:03:36)
Offline
Shin様
大変お世話になっております。
早速のご連絡を有難うございます。
了解致しました。頑張って、勉強・解析させていただきます。
(奥が深いですね!)
また、分からないことなど質問をさせていただきたいと存じます。
今後とも、どうぞ宜しくお願い致します。
Shin 様
大変お世話になっております。
作成していただきましたサンプルで、勉強をさせていただいております(何とか構造の全体が見えてきたところです。)
大変有難うございます。しかしながら、
なかなか、私にはハードルが高く、未だ十分に理解できておおりません。(申し訳ありません。)
拙い質問で申し訳ありませんが、2点ほど、可能でしたら御教授をお願い致したいと存じます。
1.項目テーブルの主キー
GetValue ( List ( 項目テーブル child 2::主キー ; Get( UUID ) ) ; 1 ) となっておりますが、
式の理解が出来ておりません。
単純に、主キー=Get( UUID )
と、設定するのではダメでしょうか?
2.”同じ単語を登録した場合には、主キーを共通にする仕組みが組み込んであります” とのことですが、
その仕組みが、何れであるのか、全く分かりません。御教授願えますでしょうか?
(勉強不足で、申し訳ありません。)
お忙しいところを、大変申し訳ありません。
可能でしたら、どうぞ宜しくお願い致します。
その2の仕組みが1です。
Offline
Shin 様
早速の御教授、大変有難うございます。
項目テーブルで、
確かに、同じ単語を入力しますと、異なる親キーでも、同じ子キーとなっております。
しかしながら、
主キーの計算式中の、List ( 項目テーブル child 2::主キー ; Get( UUID ) ) ですが、
項目テーブル child 2::主キー はフィールドですので、
List ( 項目テーブル child 2::主キー ) は、表示されますが、
Get( UUID ) は、フィールドではないためList表示されません。
関数レファレンスでは、
Listの構文: List ( フィールド {; フィールド...} )となっておりますが、
この計算式が成立するのは何故でしょうか?
また、何故この式で、”主キーを共通にする仕組み”が出来るのでしょうか?
あまりにも、高度であるため理解が追いついておりません。
(そもそも、孫のTOである項目テーブルChild2の主キーが、
項目テーブルの主キーの設定に使用されている!?
ところから、理解できていないのだと思います。)
もし宜しければ、御教授をお願い出来れば幸いです。
ご多忙のところ、大変申し訳ありませんが、
どうぞ宜しくお願い致します。
ヘルプは全部読んでください。その次の引数の説明で、要約すると、フィールドは、フィールドまたは変数と書いてあります。もし、
> Get( UUID ) は、フィールドではないためList表示されません。
なのでしたら、ほぼすべての項目で List() が計算されず、項目キーが空白になっているはずですが、実際にはなっていないですよね.
次に、異なる項目名と重複する項目名を設定した時の、その引数(特に、項目テーブル child 2::主キー が返している値と、List() が何を返しているか)がどうなっているか、その自己リレーションの動きを踏まえて、考えてみてください。式そのものは、簡単なものですが、動きは簡単ではありません。(式の構造は、私も考え抜いた物で極めて高度な動きですので、誰でもが作れるとは思いません。トリガーでスクリプトを使っても作れますが、おそらく、親キーを2個持たせようと考えるかもしれません。これなら簡単かもしれませんが、親の編集、特に削除などにある程度の制限がつくため、将来的に問題が出るかも)
ちなみに、項目テーブルChild2 は、孫のTOではないです。
Last edited by Shin (2022-08-29 08:50:03)
Offline
Shin 様
大変有難うございます。
勉強不足にて、お恥ずかしい限りです。
あまりにも高度な動きの計算式にて、感服致しております。
(動きのシミュレーションを行いながら、勉強させていただきます!)
理解と解析は不十分ですが、
お陰様で、
何とか、見よう見まねで実装することが出来、やりたいことが実現できました!
大変有難うございました。
(頂いたサンプルを手本に、更に理解を深めるようにしていきたいと存じます。)
今後ともどうぞ宜しくお願い致します。
Pages: 1
[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 613.64 KiB (Peak: 630.55 KiB) ]