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

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

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

You are not logged in.

Announcement

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


#1 2016-01-24 08:21:36

かわ
Guest

テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

以下のように、テーブル「除外果物」で設定されている値を参照して
テーブル「商品名」の中に、参照文字が入っていれば、計算結果に「1」と点灯させたいのですが、どうすればいいでしょうか?
PatternCount関数を使いましたが、参照元の値を全て参照できず機能しません。
よろしくお願いします。

■テーブル「除外果物」
りんご
みかん
いちご

■テーブル「商品名」
商品名     計算結果
青森りんご   1
東京かき    0
   鳥取いちご   1

環境は、FM14  Winです。

#2 2016-01-24 09:37:44

ぽんかん
Guest

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

データ次第で膨大な計算になるので、基本機能では不可能でしょう。
スクリプトで商品名の入力時に計算するか、カスタム関数を作る。

#3 2016-01-24 09:47:23

Hiro
Member

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

「部分一致照合」のリレーションを組むのが良さそう。

Offline

#4 2016-01-24 09:51:29

かわ
Guest

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

Hiroさん

具体的にどのようにすればいいのでしょうか?

#5 2016-01-24 10:02:12

Hiro
Member

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

チポさん発案の手法なのですが、過去ログに無かったかしら?
まず「前方一致」のリレーションの仕組みを習得して、
その仕組みを拡張すると「部分一致」のリレーションを実現できます。

チポさんお留守かしら?

Offline

#6 2016-01-24 10:24:26

かわ
Guest

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

Hiroさん
ありがとうございます。

https://fm-aid.com/bbs2/viewtopic.php?id=1911
など拝見しました。
ピラミッドキーを拝見しました。
しかしながら、途中で文字が入った場合に検索されません。

テーブル「除外果物」毎にスクリプトで値を入れるしかないでしょうか?

#7 2016-01-24 11:22:29

Hiro
Member

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

自動計算で構成できますよ。
ただ今日はあいにく忙しいので、どなたかにホロー頂くか、仕組みを自習されて下さいますか。
前方一致リレーションについては、以下スレッドのサンプルでも実装しています。
https://fm-aid.com/bbs2/viewtopic.php?pid=24907#p24907

Offline

#8 2016-01-24 12:52:20

かわ
Guest

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

Hiroさん

ありがとうございます。自習していますが、いと口がつかめていません。。

時間ができましたら宜しくお願いします。

#9 2016-01-24 14:26:01

かわ
Guest

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

前方一致はできたのですが、部分一致ができません。宜しくお願いします。

#10 2016-01-24 14:26:47

Shin
Member

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

ちょっと違う手法での解法です。
1商品毎に繰り返しフィールドで計算させ、それを合算しています。
https://www.dropbox.com/s/61dfvr5pjcl5e … 7.zip?dl=0

ただ、商品名に、山梨きいちご という物が入ると、誤動作します。その対応も今後必要かも。

前方一致でのリレーションでの計算を完全に理解していませんが、この事例のように、キーワードの前方や後方に文字が付加される場合も考えると、対象が非常に大きく拡張されますが、それはどうされているのでしょうか。

Offline

#11 2016-01-24 15:06:24

かわ
Guest

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

Shinさんありがとうございます。

以下に私の理解を書きました。間違っていればご指摘ください。

■g_商品名=
GetValue (
  ValueListItems ( Get ( ファイル名 ) ; "商品一覧" ) ;
  Get ( 計算式繰り返し位置番号 )
)

   これは、値一覧の値を横リスト表示させている。わかりやすくして頂くために配置していただいたもので
今回の目的には必要無い

■商品名_ =
PatternCount ( 商品名[1] ; g_商品名 )

これが今回必要な式。 商品名[1]の[1]は、何のために必要なのでしょうか?
これを書くとどのような効果があるのでしょうか?

また、私は、■g_商品名 は説明のために配置していただいたと理解しましたが、
繰り返しフィールドを使っていただいているので、計算上必要だったのでしょうか?

#12 2016-01-24 15:22:54

かわ
Guest

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

Shimさん

お返事と質問をさせてください。

>商品名に、山梨きいちご という物が入ると、誤動作します。
→ これは、なぜ、こうなるのでしょうか?

>前方一致でのリレーションでの計算を完全に理解していませんが、この事例のように、キーワードの前方や後方に文字が付加される場合も考えると、
>対象が非常に大きく拡張されますが、それはどうされているのでしょうか。
→ 出来ていると思い試してみましたがダメでした。

以上、宜しくお願いします。

#13 2016-01-24 16:25:10

かわ
Guest

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

Shinさん

試してみました。するとうまくいきました!ありがとうございます!

でも、計算に時間がかかりますね。

やはりスクリプトで一括で計算させた方がいいように思えました。

#14 2016-01-24 18:06:06

Shin
Member

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

要するに、
PattercOunt ( 商品名 ; "りんご" ) + PattercOunt ( 商品名 ; "みかん" ) + PattercOunt ( 商品名 ; "いちご" )
を計算させているのです。3項目くらいでしたらこのままの式で計算フィールドにしたらいいのですが、項目名が数十にもなると書ききれなくなりますね。それを項目毎に展開して計算させています。

サンプルでは、最低限のフィールド構成で、不要な物は無いです。
繰り返しフィールドの中の [1] は、繰り返しフィールドの繰り返し位置1のフィールドを参照する、という意味で、繰り返しでないフィールドを参照する時には必要です。

数のカウントに PatternCount() を使っているので、PatternCount ( "山梨きいちご" ; "いちご" ) は、0となってほしいはずですが、1とカウントしてしまいます。これは、部分一致参照を行っても起こる問題で、対応は結構めんどうです。

計算に時間がかかるとは、どの程度の規模のテーブルですか。スクリプトや全置換で行うのと比べても、こちらの方が早いはずですが。表示を早くしたければ、商品名と結果フィールドのみのレイアウトを作ってください。

Last edited by Shin (2016-01-24 18:20:11)

Offline

#15 2016-01-24 20:09:46

かわ
Guest

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

ありがとうございます。

参照先は100−300ですので、繰り返しを300に設定しました。
その成果、表示させたい画面では遅く時計が回ります。
計算結果しかだしてないのですが??
何か勘違いしているでしょうか?

#16 2016-01-24 23:24:23

Shin
Member

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

参照先とは何をさしていますか。

Offline

#17 2016-01-24 23:40:10

かわ
Guest

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

今回の例でいえば、

■テーブル「除外果物」

にあたります。これが、100−300あります。

#18 2016-01-24 23:42:16

かわ
Guest

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

■テーブル「商品名」

も実際は、10万ー30万あります。

①loop処理
    国と商品名で検索し、全置換で除外フラグ「商品名」に数字「1」を挿入
②対象レコードのみ全置換処理

これでスクリプトをしましたが、やはり遅いですね。。。

#19 2016-01-25 03:40:23

Hiro
Member

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

#9 > 前方一致はできたのですが、部分一致ができません。宜しくお願いします。
数年以上前の古い.fp7時代のサンプルが公開してありましたので、取り敢えず「部分一致」の組み方をご覧ください。
それをご覧頂き、不明な点などお再度尋ねくださいますか。

「部分一致照合.fp7」.zip → http://yahoo.jp/box/7e9K5g

Offline

#20 2016-01-25 09:36:29

チポ
Member

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

呼ばれた様ですが、、
昨日はおつきあいの旅行で一日飲んだくれていました@@;;

Hiroさんがサンプルをアップしていますので、出る幕はないかと。。

レコード数が多いので、
照合用に分解するフィールド分のサイズアップが大きくなるでしょうね。

それと、
発案時の考え方と照合の向きが逆になるので、検証を十分行ってください。

Offline

#21 2016-01-25 10:05:39

scripter
Guest

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

結果の値を使うとき(検索)の遅さが問題になるのでは?
計算フィールドにすると結果が保存されないので、毎回表示や検索するたびに計算が発生します。
繰り返しを使うと、実際のレコード数と関係なく設定した繰り返し数の計算が発生します。100~300というのが意味不明ですが、「除外」のテーブルが複数あるんですかね。
保存するような計算式にもできますが、「除外」が編集された場合に全レコードを再計算する必要があります。

#22 2016-01-25 13:25:05

Hiro
Member

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

#10 > 発案時の考え方と照合の向きが逆になるので、検証を十分行ってください。

あぁ!「逆向・部分一致」照合は論理的にダメですね。残念!
ORキーの「前方一致」照合が論理成立しないのと同じことでした。

Offline

#23 2016-01-25 13:38:07

Shin
Member

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

「除外果物」が、100−300あり、それがある程度固定されているのでしたら、g_商品名 をグローバルの計算フィールドに変更すると、計算は格段に速くなります。
除外果物が頻繁に変更されるのでしたら、この方法も取れません。
リレーションを使った方法でも相当の時間がかかると思います。

スクリプトで除外果物毎に300回検索した方が早いかもしれない。

Last edited by Shin (2016-01-25 13:41:02)

Offline

#24 2016-01-25 13:38:45

チポ
Member

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

> Hiroさん
いや、
照合の有無は分かりますよ。

Last edited by チポ (2016-01-25 13:40:42)

Offline

#25 2016-01-25 14:01:51

チポ
Member

Re: テーブル「除外果物」を参照して テーブル「商品名」の中に「1」と点灯させる方法

ああ、ダメか。
ORで照合ですものね。。

前にも同じ間違いをHiroさんに指摘されたような。
同じ間違いを犯すボケです *_*

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 570.64 KiB (Peak: 591.55 KiB) ]