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

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

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

You are not logged in.

Announcement

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


#1 2023-04-29 21:15:27

計算式でフィールドを指定したい

FMS19とFMP19でWindows環境、ServerはMACMini(Ventura13.1)の構成です。

フィールド名が部品番号1のとき、その内容をコピー[部品番号1]となりますね。この部品番号1というのを計算式で表したいのです。
要は部品番号1,部品番号2・・と変えていって関連レコードへの移動をかんがえているのです。

Offline

#2 2023-04-29 21:46:14

Shin
Member

Re: 計算式でフィールドを指定したい

部品番号1、部品番号2、 というようなフィールドが複数定義してあるのでしょうか。
それでしたら、構造を変更することをお勧めします。
部品テーブルを新たに作り、今のテーブルから主キーでリレーションを貼ります。部品テーブルをポータルで表示しておきます。部品テーブルからは、関連テーブルへ移動するのも簡単です。

Offline

#3 2023-04-30 08:00:46

Re: 計算式でフィールドを指定したい

部品番号1には、部品の番号が入っています。部品の番号は、部品のマスターファイルに登録されているわけです。部品の番号からマスターファイルの内容を読み出したいわけです。部品番号1,2とあるように部品を複数個つかって製品が構成されています。

Offline

#4 2023-04-30 08:51:22

Shin
Member

Re: 計算式でフィールドを指定したい

答えになっていませんが、
そのテーブルのフィールドの構成をお尋ねしています。

今の構造のままでも、その部品番号それぞれから部品詳細のテーブルへリレーションを張り、そrぞれに関連レコードへ移動スクリプトを貼り付ければいいですが、面倒ですし、メンテナンスが大変でしょう。

Last edited by Shin (2023-04-30 10:56:00)

Offline

#5 2023-04-30 12:40:54

Re: 計算式でフィールドを指定したい

はい、この部品番号1から30にはマスターとのリレーションをそれぞれはってあります。ここで、LOOP関数を使って部品番号1つぎに部品番号2・・・と関連レコードへ移動したいわけです。部品番号+数字では関連レコードに移動できないので、この部品番号XXの内容をコピーしてマスターに移動して検索しようとおもっています。

Offline

#6 2023-04-30 13:50:41

Shin
Member

Re: 計算式でフィールドを指定したい

どうしても今の構造を変更しないのなら
関連テーブルへ移動
レイアウトを移動[元の]
のステップを30個並べたスクリプトを作ればいいのでは

上で提案した構造にすれば、関連レコードへ移動 の1ステップで済みます。

Last edited by Shin (2023-04-30 13:53:51)

Offline

#7 2023-04-30 15:29:17

Re: 計算式でフィールドを指定したい

そうですね。この部品番号1,2・・は、別のマスターからルックアップでもってきているのです。レコード数が40万件ぐらいになっているので、うーんどうしましょう。Roop関数をあきらめて、しこしこステップを30個ならべようかなとおもっています。

Offline

#8 2023-04-30 16:22:26

Shin
Member

Re: 計算式でフィールドを指定したい

全体の動きはどうなのですか。別のマスターから部品データを含めて持ってきた物を、部品データを抽出してどうするのですか。
必要部品点数表を作りたい、ということなのですか。

> この部品番号1,2・・は、別のマスターからルックアップでもってきている
同じデータが、何回も今のテーブル内に出てくる、というのは、非常に低効率ですよ。
その別のマスターの中のデータの持たせ方を含めて、考え直すべきでしょうね。そちらは、製品マスターに対して部品マスターを関連づけて、部品番号を1レコードごとに持たせておきます。
今の対象の製品テーブルで製品が選択されれば、そのマスターを通して部品リストを抽出し、部品テーブルへインポートする、というのが簡単でしょう.。

その2テーブル構成への移行も、製品マスターの中の部品番号の一覧を繰り返しフィールドで作り(計算フィールドにすればすぐに作れます)、その製品キーと部品番号をばらばらにしてインポートすれば、一瞬で2テーブル構成に変更できます。または、30回インポートしても同じことができます。そちらの構造に移行させてみてはいかがですか。

Offline

#9 2023-04-30 17:39:08

Re: 計算式でフィールドを指定したい

今回は、組立部門が組立のチェックリストを印刷したいという要望から発生しました。1つの製品に30ぐらいの部品があるわけです。ですので、1つづつの部品マスターがあり、それの集合体であるパーツリストがあるわけです。パーツリストにある30ぐらいの部品のうち組立が関係するものだけを抽出してそのチェックリストを印刷するというものです。

Offline

#10 2023-04-30 22:03:54

himadanee
Guest

Re: 計算式でフィールドを指定したい

リレーションを1つでというんですから、ループで$nを1~30で回して
フィールド設定「転記用部品番号;GetField("テーブル::部品番号" & $n)」
関連レコードへ移動(転記用部品番号からのリレーション)
とかいうことでは。

#11 2023-04-30 23:18:21

Shin
Member

Re: 計算式でフィールドを指定したい

変数に
List ( 部品番号; 部品番号2・・ )
を保存しておき、
計算フィールド  GetValue (.変数 ; n )
からリレーションを張っておいてもいいのでしょうが。

Offline

#12 2023-05-01 13:33:38

Shin
Member

Re: 計算式でフィールドを指定したい

マスター側に構造にフィールドをいくつか追加して、このような構造にしてはいかがですか。とってもシンプルで、今の構造からの移行も難しくはないです。部品に構成部品(部品を組み立てた半製品)が混じっている場合は、一挙に取り込まず、1品ずつ取り込みをします。
https://www.dropbox.com/s/cgtez39jcwy76 … 2.zip?dl=0

Last edited by Shin (2023-05-01 16:12:00)

Offline

#13 2023-05-01 20:47:53

Re: 計算式でフィールドを指定したい

ありがとうございます。勉強します

Offline

#14 2023-05-01 21:15:11

Re: 計算式でフィールドを指定したい

転記用部品番号というフィールドをつくるわけですね。やってみます。Shinさんのプログラムでは製品マスターというところが、パーツリストになります。これで部品番号1,2・・の関連製品マスターに
移動するのはどうなるのでしょう。

Offline

#15 2023-05-01 22:28:26

Shin
Member

Re: 計算式でフィールドを指定したい

パーツリストとはなんのことですか、製品マスターに相当するもの?
部品番号から関連製品マスターへ移動するとは、今までの説明と逆の動きのように思いますが。

製品テーブルに製品キーを設定すると、それの部品リストを部品テーブルに作り表示させています。同時に、製品テーブルのポータルに同じ表示がされています。
目的とする動きの詳しい説明がないので、ほぼ予想だけで組み立てましたが、違うようですね。
これ以上は、もっと詳しく説明が必要です。

Last edited by Shin (2023-05-02 03:07:39)

Offline

#16 2023-05-02 08:13:27

Re: 計算式でフィールドを指定したい

ありがとうございます。製品マスターにある部品番号の集合体がパーツリストなんです。ややこしいですが、パーツリストにある部品番号の製品マスターに関連レコードで移動したいわけです。
今、悩んでいるのは、この部品番号が30ぐらいあるので、スクリプトのRoop関数のなかで関連レコードへ移動したいのです。
ところが関連レコードに数式での指定ができないということです。

Offline

#17 2023-05-02 08:43:45

Shin
Member

Re: 計算式でフィールドを指定したい

その動きそのものが、サンプルの中に作ってありますが。
> パーツリストにある部品番号の製品マスターに関連レコードで移動したい
移動したいのは、部品マスターへ なのですか。
単純にそれだけでいいのでしたら、製品マスターの中に新たに作った部品番号という繰り返しフィールドから部品マスターへリレーションを張っておき、関連レコードへ移動 すればいいです。
それとも、部品番号1 の部品マスターのレコードのウインドウ、部品番号2 の部品マスターのレコードのウインドウ、... という風に30個のウインドウでそれぞれで表示したい、ということなんでしょうか。

Last edited by Shin (2023-05-02 13:49:01)

Offline

#18 2023-05-02 21:50:49

Re: 計算式でフィールドを指定したい

いろいろありがとうございます。でも今回は、しこしこスクリプトを30回くりかえしますわ。頭が混乱してきました。

Offline

#19 2023-05-03 10:16:07

Shin
Member

Re: 計算式でフィールドを指定したい

#10 #11 は読んでいないのかな
作成したいパーツリストにある部品番号の製品マスターを、どのように表示したいか、どこにも書いてないんですよ。30個のウインドウで表示するなら、その方法でいけるでしょう。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 8 queries executed - Memory usage: 561.13 KiB (Peak: 582.03 KiB) ]