初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2014-04-23 23:42:41

Gorilla1
Guest

リレーション先の複数の値を別のフィールドにセットしたい

いつも助けていただきありがとうございます。

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

lookupのイメージで
テーブルA、テーブルBとがありテーブルAのグローバルフィールドCとテーブルBのフィールドDがリレーションシップで結んであります。

グローバルフィールドC、フィールドDには同じ値一覧で20種類程度の分類分けがされています。

グローバルフィールドCに分類分けされた値一覧をどれか入力しスクリプトを実行すると、テーブルAにテーブルBの該当する値一覧の
項目をソートした形でlookアップして読み込んできて表示するように設定をしたいと考えております。

lookup先の2行目以降のデータを読み込む方法がいまいちわからずご教授いただければと思っているのですが
教えていただくこと出来ませんでしょうか。

よろしくお願いいたします。

#2 2014-04-24 05:35:41

Moz
Member

Re: リレーション先の複数の値を別のフィールドにセットしたい

お使いのバージョンと環境を書くとより適切なアドバイスが頂けるかと思います。

Gorilla1 wrote:

lookupのイメージで
テーブルA、テーブルBとがありテーブルAのグローバルフィールドCとテーブルBのフィールドDがリレーションシップで結んであります。

グローバルフィールドC、フィールドDには同じ値一覧で20種類程度の分類分けがされています。

グローバルフィールドCに分類分けされた値一覧をどれか入力しスクリプトを実行すると、テーブルAにテーブルBの該当する値一覧の
項目をソートした形でlookアップして読み込んできて表示するように設定をしたいと考えております。

いまいち理解しづらいのですが、
ルックアップしてきて表示というのはどんな動作を指すのでしょう?

フィールドDにフィールドCと同じ値が設定されているテーブルBのレコードのデータ(名前など)を
テーブルAのテキストフィールドなどに一覧で表示したいということでしょうか?

Offline

#3 2014-04-24 08:58:33

Traveller
Guest

Re: リレーション先の複数の値を別のフィールドにセットしたい

テーブルBには一覧で選択した値を持つレコードが複数あるのですよね。
lookupとあるけどテーブルAにあるのは計算フィールドではないですよね。
>lookup先の2行目以降のデータを読み込む方法
何番目なのか分かっているのならGetNthRecordでフィールド設定したら
いいのでは。

#4 2014-04-24 08:58:48

Shin
Member

Re: リレーション先の複数の値を別のフィールドにセットしたい

繰り返しフィールドへルックアップしようとしているのでしたら、無理ですよ。
そのままで関連テーブルをポータルで表示すると、うまくいきます。

レイアウトの再検討を。

Offline

#5 2014-04-24 09:05:54

Traveller
Guest

Re: リレーション先の複数の値を別のフィールドにセットしたい

違った
>テーブルAにテーブルBの該当する値一覧の
>項目をソートした形でlookアップして読み込んできて
>表示するように設定をしたい
ですから、普通にポータルかな?

#6 2014-04-24 09:51:46

Gorilla1
Guest

Re: リレーション先の複数の値を別のフィールドにセットしたい

ありがとうございます。
バージョン13、ウインドウズ版を利用しております。

テーブルAは計算フィールドではなくテキストフィールドや数字フィールドなどです。
テーブルAの表示自体はポータル表示にしましたが、
>何番目なのか分かっているのならGetNthRecordでフィールド設定したらいいのでは。
というのがいまいちテストしても読み込めなかったのですがどのようにすればできますでしょうか?

#7 2014-04-24 10:01:42

チポ
Member

Re: リレーション先の複数の値を別のフィールドにセットしたい

List関数で、
関連レコードのフィールド値のリストが得られます。

複数の関連レコードがある場合、
ルックアップできるのは最初に照合した関連レコードのフィールドのみです。


しかし、目的がいまいち分らない。。

Offline

#8 2014-04-24 10:10:16

Moz
Member

Re: リレーション先の複数の値を別のフィールドにセットしたい

Bのレコードをポータルに表示で良いような気もしますね。

A,Bがどんなデータを格納しているのか明らかにするとイメージがしやすいかも。

Offline

#9 2014-04-24 10:13:03

Gorilla1
Guest

Re: リレーション先の複数の値を別のフィールドにセットしたい

目的なんですが、インターネットショップで過去の購入履歴をlookUpしてきて今回の注文分に変更・追加などを加えて
処理したいという流れを想定しています。
そのために過去の履歴を読み込んできたいと考えています。

#10 2014-04-24 11:08:28

Traveller
Guest

Re: リレーション先の複数の値を別のフィールドにセットしたい

完全なポータルですね。
関連レコード移動、レコード複製の。
ルックアップではできません。

#11 2014-04-24 11:15:09

Moz
Member

Re: リレーション先の複数の値を別のフィールドにセットしたい

過去の注文の明細行をそのまま今回の注文の明細に入れたいってことですかね?

過去の注文を丸ごと今回の注文に入れるのか、1行だけ追加するのか
そもそも過去の同じ人の注文なのか......。

考えることいっぱいありそう。

商品の情報を引っ張りたいだけなら注文履歴じゃなくて商品マスタでも良いと思いますね。


ちょっと気になったのですが、
インターネットショッピングの過去の注文を利用して新規の直接注文を起こすってことでしょうか?
大体のサービスはネットからの注文をCSVやらなんやらで取り出せるので
それをインポートするだけじゃないですかね?

サービス事業者によってはお客さんに直接注文促すの禁じてますし......

Last edited by Moz (2014-04-24 11:18:03)

Offline

#12 2014-04-24 11:31:41

Gorilla1
Guest

Re: リレーション先の複数の値を別のフィールドにセットしたい

インターネットショップでのショップが購入する人はそれぞれ同一商品のリピート注文が多い為、注文時の購入番号に
ひもづけされてある購入者単位での以前の購入履歴をもとに新規の注文を起こしたいと思っています。

新規の注文→レコードを作成→過去に注文履歴がある場合→その購入番号を指定する→その時の商品ID、数量、価格など注文履歴を読み込む→今回の注文時には
数量や商品が変更になっている場合も当然あるので変更する
過去の同じ人の注文のみで、複数回注文過去にしている場合でも指定した購入番号のデータを対象にして読み込みたいと思っています。

ポータルにした場合、関連レコード移動はテーブルAからテーブルBへの移動をしてテーブルB側でポータルを作るというイメージでしょうか?

#13 2014-04-24 11:47:46

チポ
Member

Re: リレーション先の複数の値を別のフィールドにセットしたい

テーブルA・Bの説明がないので分りませんが、、

顧客マスタはないのでしょうか?
顧客マスタにポータルでその顧客の受注歴を表示して、
そのポータル行から新規受注を作ればいいのでは。

Offline

#14 2014-04-24 11:48:21

Shin
Member

Re: リレーション先の複数の値を別のフィールドにセットしたい

テーブルAが受注履歴、テーブルBが明細、という事になっているのでしょうか。
テーブルAの中で、購入者番号で自己リレーションを張り、日付で過去分だけ、という条件も付けておきます。そのリレーションで、直近の明細へ、関連レコードへ移動で移動すると、目的の明細が取得できます。それを、今回分として複製すればいいのでしょうね。
テクニックとして、別テーブルやファイルへ書き出したり、レコード毎に複製して関連キーを付け替えたりするといいでしょう。

Offline

#15 2014-04-24 13:18:09

Gorilla1
Guest

Re: リレーション先の複数の値を別のフィールドにセットしたい

たすけていただきありがとうございます。

テーブルAが受注履歴、テーブルBが過去の確定した売上の明細となっています。
今回はテーブルBのデータをテーブルAに持って行きたいと思っています。
テーブルBのデータを複製する前段階としてテーブルAに受注データを読み込みたいと考えております。
テーブルBのデータをテーブルAに複製することが可能なのでしょうか?

何度もお手間かけて申し分けございません。

#16 2014-04-24 16:34:57

Shin
Member

Re: リレーション先の複数の値を別のフィールドにセットしたい

テーブルの中のフィールドの構成はどうなっているのですか。

Offline

#17 2014-04-24 17:24:43

Gorilla1
Guest

Re: リレーション先の複数の値を別のフィールドにセットしたい

お手数おかけして申し分けございません。

テーブルAが受注履歴、
購入者ID、注文日、アイテムID、価格、数量これらを読み込みたいと思っております。

テーブルBが過去の確定した過去の売上の明細となっています。
購入者ID、売上日、アイテムID、価格、数量、摘要欄
その他、その売上をしたときのアイテムIDで登録されていた購入者の住所、商品名など変更になる場合がある為、売上の明細には保存しています。

読み込みたいのはアイテムID、価格、数量、摘要欄になります。

価格は人によって割引がある為過去の売上から読み込むようにしたいと思っております。

#18 2014-04-24 17:52:07

チポ
Member

Re: リレーション先の複数の値を別のフィールドにセットしたい

受注が売上になるのでしょうから、
一つのテーブルで良さそうですが。。


前レスにも書きましたが、
購入者マスタはないのですか?

なければ
テーブルBで購入者で自己リレーションしそのポータルを配置。
そこから選択・クリックで
そのレコードをテーブルAでインポートするスクリプとにすればいいのでは。

Offline

#19 2014-04-24 18:57:00

Shin
Member

Re: リレーション先の複数の値を別のフィールドにセットしたい

受注後、売上になったものは、テーブルBへインポートして、テーブルAのレコードは削除、でしょうか。
無駄の多い、トラブルを起こす可能性の高い構造だと思います。

1個のテーブルへまとめてしまい、注文日、売上日のフィールドで区別すれば済みそうです。
また、1回の注文ごとに1レコードとなるテーブルを作っておかれた方がいいですよ。

過去の売上からは、購入者IDでリレーションし、ポータルで表示させればいいでしょう。その行をクリックすれば、その内容をフィールド設定で持ってくるような仕組みは簡単ですよ。
フィールド設定を繰り返してもいいですし、関連レコードへ移動して、1レコードだけをアクティブにしてインポート、でもいいでしょうね。

Offline

#20 2014-04-25 12:50:58

Gorilla1
Guest

Re: リレーション先の複数の値を別のフィールドにセットしたい

いろいろとお世話になりました。

構造に問題があると言うことですのでテーブルの構成自体を見直すことにしました。
時間が少しかかるかと思いますがすすめてみます。
ありがとうございました。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 603.81 KiB (Peak: 620.35 KiB) ]