関連レコードを関連レコード表示する方法

既出かもしれませんが見つけられなかったため、ご質問させていただきます。

スクリプトを書けば、関連レコード表示させた内容を関連レコードとして引っぱってくることはできるのでしょうか。

 

現在は下記の構造になっていて、アプリBに入っている「添付ファイル」を、アプリAに関連レコードとして表示させる、ということしたいと思っています。

===

アプリA(データベース) ※アプリCを通してアプリBの内容を関連レコードとして表示

アプリB(データベース) ※「添付ファイル」の大元がある

アプリC(アプリAとアプリBを繋げる役割) ※アプリAからのルックアップとアプリBからのルックアップを中心に成立している

===

他のフィールドと異なり、「添付ファイル」はルックアップができないことは認識しています。

 

いくつかやり方があると考えていて、

1)アプリCに、「添付ファイル」をルックアップするスクリプトを書き、アプリAはアプリCを通して「添付ファイル」を関連レコード表示する

⇒こちらは下記を参照すればできるかなと思ったのですが、スキル不足により一旦保留としています。

https://developer.cybozu.io/hc/ja/community/posts/900001006786-%E3%83%AB%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%81%A7%E6%B7%BB%E4%BB%98%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%82%92%E3%82%B3%E3%83%94%E3%83%BC

 

2)アプリCにアプリBの「添付ファイル」を関連レコード表示させ、さらにアプリAにはアプリCの「添付ファイル」を関連レコード表示させる

⇒こちらの可能性についても検討できないかと思っています。

 

どうぞよろしくお願いいたします。

こんにちは!

「関連レコード表示させた内容を関連レコードとして引っぱってくる」

というのは
Bに保存した画像をCで関連レコード表示させて、その関連レコードをAで表示ということですか?
Cに設置している関連レコードの「表示するレコードの条件」の、Bの内容を引っ張ってきている設定と同じように、

Aでも関連レコードを設置して「表示するレコードの条件」で同じ値を使ってBから内容を引っ張ってくれば、
AでもCと同じ添付ファイルを表示できるのではないでしょうか?

どういった完成形を想像されているのか図などで描いていただけると回答もつきやすいかと思います。

376177001012 様

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

詳細を図にしてみましたのでご覧ください。

仰る通り、アプリBとアプリAを直接関連付けられれば楽なのですが、現状、この2つのアプリを紐づけるフィールドがアプリB側にありません。

理由として、アプリBのレコードを、アプリAの複数のレコードに関連付け、かつアプリAのレコードに表示させる際に指定(アプリCのフィールドE)の順番に表示させたいため、このような構造で組んでいます。

これまではアプリBに添付ファイルのフィールドがなかったため、①をルックアップにし問題なく使用していたのですが、添付ファイルフィールドを設定するにあたって①をルックアップのままにする方法と関連レコードにする方法の2通りがあると考えました。(②は、現在の構造だと関連レコードしかないかなと思っています。)

いずれにしてもスクリプトを書かないといけないのかなと予想しています。

既存のアプリをもとに改良しようとしているので、余計に難しく考えてしまっているかもしれません。。

こちらで伝わりますでしょうか。

ありがとうございます。構造がちゃんと理解できていなくて申し訳ないのですが、
アプリBのレコードをそのままアプリAで関連レコードとして結びつけるとおかしくなるので中間のアプリCが必要。ということですね。
アプリAに、アプリB-C間の紐付けをしているフィールドAを仕込めばよいのではとおもいましたが、アプリBはアプリAの複数のレコードに紐づくのですね。

一旦アプリをデータ構造から考え直して最初から組み立てたらうまくいくかもしれないですが、
このまま既存のアプリを使う方向で行くなら、JavaScriptカスタマイズが必要そうな気はしますね。

JavaScriptカスタマイズだと、(プラグイン、連携サービスなどでもいけるかもですが)
BーC間でルックアップでファイルのコピーをすれば、AーC間で関連レコード取ってこれそうですね。

 

376177001012様

早速にありがとうございます。

コメントいただいた通り、アプリA上でアプリBのデータを希望通り表示するためには、どうしてもアプリCが必要になっている状態です。

 

やはり現行のアプリを改善するのであれば、B⇔C間は関連レコードではなくルックアップの方がスムーズですよね。。

できれば関連レコードで紐づけられると、アプリBを更新した際に”アプリからアプリBへの再ルックアップ”のスクリプトを書かないで済むので便利なのですが、関連レコードは現実的ではないでしょうか。

残念ながら、現状の仕様での標準機能の関連レコードでは難しいと思います(ToT)が、
標準機能の活用アイデアということだと思いますので
もしかするとこちらのコミュニティのほうが良い回答が得られるかもしれません^^;

キンコミ
https://kincom.cybozu.co.jp/

B→C→AとCを挟んで複数のレコードと結びつけるアイデア素敵なので真似しようと思います。
勉強になりました。ありがとうございます。

376177001012様

やはり標準機能で関連フィールドを成立させるのは難しいですよね。。

キンコミでの質問も検討してみます。

いろいろとありがとうございました。

横から失礼します。

アプリCを挟まず、アプリBにフィールドD、Eを組み込んではいかがでしょうか?
下図はアプリBに検索キー(フィールドD)、表示順(フィールドE)を組み込んでみたつもりのサンプルです。

これを、検索キー(フィールドD)で紐付けて関連レコード表示することで下図のようになります。
並び順は表示順(フィールドE)で昇順にしてあります。

> 中尾さん(なぜかメンションができず:sweat_drops:

ありがとうございます!
私も最初それだと思いました。

しかし、おそらくなのですが、
A1にB1とB2を
A2にB1とB3を
関連レコードで持ってきたいという話なんだと思います。
(BのレコードがAから重複を許して何回も呼ばれちゃうという感じだと思いました。)

ここで、
A1・・・アプリAのレコード1
B1・・・アプリBのレコード1
C2・・・アプリCのレコード2
のように表した時

A1にAC関連付けフィールド1をもたせて、AにB1とB2の関連レコードの内容を表示したい
B1  -   BC関連付けフィールド1 -  C1(現状B1をルックアップで持ってる)  -   AC関連付けフィールド1  - A1
B2  -   BC関連付けフィールド2 -  C2(現状B2をルックアップで持ってる)  -   AC関連付けフィールド1  - A1

A2にAC関連付けフィールド2をもたせて、AにB1とB3の関連レコードの内容を表示したい
B1-BC関連付けフィールド3-C3(現状B1をルックアップで持ってる)- AC関連付けフィールド2 - A2
B3-BC関連付けフィールド4-C4(現状B3をルックアップで持ってる)-AC関連付けフィールド2 - A2

なので、現在の構成でアプリCを消しちゃうと、A1とA2でB1を呼び出すのが困難なので、アプリCが必要なのかなぁと

A1にB1とB2の関連レコード(B1,B2の実態はC1,C2がルックアップしてきて持ってる値、順番つき)
A2にB1とB3の関連レコード(B1,B3の実態はC3,C4がルックアップしてきて持ってる値、順番つき)

の表示ができなくなっちゃうのかなぁと思いました:eyes::sweat_drops:

369013077812さん、合ってますでしょうか:eyes:??

>中尾様

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

すみません。説明が不十分な部分がありました。

376177001012様が補足説明してくださった通りです。一応自分のことばで説明してみます↓↓

アプリBの内容を、アプリAの「各レコード」に関連レコードとして(様々な順番で)表示させています。

例えば、

アプリBにレコード①、レコード②

アプリAにレコード(1)、レコード(2)

があり、アプリAの

レコード(1)にはレコード①→②の順番、

レコード(2)にはレコード②→①の順番

で表示させたい場合、アプリAとレコード①、②を紐づけ、順番を指定するためのアプリCに、4つのレコードを下記の通り作成

レコード(1)とレコード①(順番=1) レコード(1)とレコード②(順番=2)

レコード(2)とレコード①(順番=2) レコード(2)とレコード②(順番=1)

 

中尾様が示してくださった方法でもやりたいことはできるのですが、アプリAに表示させる回数分、アプリBに同じ内容の(ただしフィールドDとEの値のみ異なる)レコードを作成しなければならないのが手間だなと。。

なるほど、複数に紐付け、しかもレコードによって順番を変えることもあるのですね…。
何かいい方法ないか考えてみます。