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

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

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

You are not logged in.

Announcement

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


#1 2020-06-15 16:37:03

chaco2008jp
Member

スクリプトの変数設定やフィールド設定で、テーブル名を変数のような方法で管理したいのですが方法はありますか?

いつもお世話になっております。

ファイルメーカーでスクリプトを構築しているのですが、以下のような事が可能なのかを知りたく、投稿させて頂きます。

以下のようなテーブル(仮に26個)があるとして、

・テーブルA
・テーブルB
・テーブルC



・テーブルZ

全てのテーブルに以下のようなフィールド(仮に4個)がある場合

・フィールドA
・フィールドB
・フィールドC
・フィールドD


スクリプトの「変数を設定」と「フィールド設定」で、現在は以下のような設定をしているのですが、

【変数を設定】$変数A → テーブルA : フィールドA
【変数を設定】$変数B → テーブルA : フィールドB
【変数を設定】$変数C → テーブルA : フィールドC
【フィールド設定】テーブルA : フィールドD → $変数A + $変数B + $変数C

【変数を設定】$変数A → テーブルB : フィールドA
【変数を設定】$変数B → テーブルB : フィールドB
【変数を設定】$変数C → テーブルB : フィールドC
【フィールド設定】テーブルB : フィールドD → $変数A + $変数B + $変数C



【変数を設定】$変数A → テーブルZ : フィールドA
【変数を設定】$変数B → テーブルZ : フィールドB
【変数を設定】$変数C → テーブルZ : フィールドC
【フィールド設定】テーブルZ : フィールドD → $変数A + $変数B + $変数C




このテーブル設定を、以下のようなイメージで1回テーブルを設定すれば希望する計算結果が出力されるようにしたいのですが、方法はありますか?


【テーブルを選択】$テーブル名 → テーブルA
【変数を設定】$変数A → $テーブル名 : フィールドA
【変数を設定】$変数B → $テーブル名 : フィールドB
【変数を設定】$変数C → $テーブル名 : フィールドC
【フィールド設定】$テーブル名 : フィールドD → $変数A + $変数B + $変数C

【テーブルを選択】$テーブル名 → テーブルB
【変数を設定】$変数A → $テーブル名 : フィールドA
【変数を設定】$変数B → $テーブル名 : フィールドB
【変数を設定】$変数C → $テーブル名 : フィールドC
【フィールド設定】$テーブル名 : フィールドD → $変数A + $変数B + $変数C



【テーブルを選択】$テーブル名 → テーブルZ
【変数を設定】$変数A → $テーブル名 : フィールドA
【変数を設定】$変数B → $テーブル名 : フィールドB
【変数を設定】$変数C → $テーブル名 : フィールドC
【フィールド設定】$テーブル名 : フィールドD → $変数A + $変数B + $変数C


現在の方法だと、変数を設定×3と、フィールド設定×1の計4工程が必要ですが、
テーブルを変数のような形で管理出来るのであれば、テーブルを選択×1の、1工程で作業が完了出来ると考えております。

※実際にはテーブル数も変数数も非常に多い状況で、現在の方法で設定していくと全ての変数設定に入って計算式内のテーブル名の書き換えが必要なので手間だなと思っております。
※分かりやすいように上記のような例を挙げさせて頂きましたが、実際には状況が異なりますので、「こういう計算ならもっとこういう方法が…」ではなく、テーブル名を変数のような形で管理出来るのかが知りたいです

何か良い方法があればご教授願いたいです、宜しくお願い致します。

Offline

#2 2020-06-15 17:08:55

チポ
Member

Re: スクリプトの変数設定やフィールド設定で、テーブル名を変数のような方法で管理したいのですが方法はありますか?

GetField関数
をお調べください。
テーブル名不要です。

ヘルプのリンクです
  https://fmhelp.filemaker.com/help/18/fm … ld.html%23


いろいろ疑問がありますが聞いちゃいけない様ですので。。

Offline

#3 2020-06-15 17:12:14

チポ
Member

Re: スクリプトの変数設定やフィールド設定で、テーブル名を変数のような方法で管理したいのですが方法はありますか?

書き落しました;;

> 【フィールド設定】$テーブル名 : フィールドD → $変数A + $変数B + $変数C
これはスクリプトステップ
  フィールドを名前で設定
を使えばいいでしょう。

  https://fmhelp.filemaker.com/help/18/fm … me.html%23

Offline

#4 2020-06-15 17:29:40

chaco2008jp
Member

Re: スクリプトの変数設定やフィールド設定で、テーブル名を変数のような方法で管理したいのですが方法はありますか?

チポ様

コメントありがとうございます!
しかし、頂いたURLなど何度も何度も読み返しましたが、自分にはどう応用すれば良いのか分かりませんでした、、

>いろいろ疑問がありますが聞いちゃいけない様ですので。。
お気を悪くさせてしまい申し訳ございません、、こちらの掲示板は皆さま非常にレベルが高く、理解出来ない話が多いため出来る限り質問をシンプルにと練りに練った例と質問の仕方だったのですが、、
やはり基礎的な勉強が必要だと再認識致しました、、またレベルが上がってから出直してきます!ありがとうございました!!

Offline

#5 2020-06-15 18:13:03

chaco2008jp
Member

Re: スクリプトの変数設定やフィールド設定で、テーブル名を変数のような方法で管理したいのですが方法はありますか?

チポ様

度々申し訳ございません!頂いた情報を元に色々と実験して考えてみたのですが、恐らく答えが出ました!
以下のような事をご提案頂いていた、という解釈で宜しいでしょうか?

作業1、「変数の設定」で、$テーブル名 → "テーブルA"
作業2、「フィールドを名前で設定」で、、、
      ターゲットフィールドの指定 → $テーブル名 & "::" & "フィールドD"
      計算結果 → GetField ( $テーブル名 & "::" & "フィールドA" ) + GetField ( $テーブル名 & "::" & "フィールドB" ) + GetField ( $テーブル名 & "::" & "フィールドC" )

つまり、「フィールドを名前で設定」や「GetField関数」は、他のスクリプトと違って「フィールドの指定をテキスト直打ち、または計算式で指定する事が出来る」、という所がポイントで、
だからこそ変数で設定したテキストも、フィールドを指定する値として使用する事が出来る、という解釈で宜しいでしょうか?

Offline

#6 2020-06-16 09:03:22

チポ
Member

Re: スクリプトの変数設定やフィールド設定で、テーブル名を変数のような方法で管理したいのですが方法はありますか?

> 作業1、「変数の設定」で、$テーブル名 → "テーブルA"
こうすると、テーブルごとに指定を繰り返すことになりますよね。

例えば、
  Get ( アクティブフィールドテーブル名 )
がありますから、
いずれかのフィールドに移動すればそのテーブル名が得られます。

また、
レイアウト名をそのテーブル名にすれば
  Get ( レイアウト名 )
でもいいでしょう。


>  GetField ( $テーブル名 & "::" & "フィールドA" )
テーブル名不要で
   GetField ( "フィールドA" )
これでいいです。


フィールドDを計算フィールドとできない理由があるのでしょうか?

Offline

#7 2020-06-16 10:42:58

chaco2008jp
Member

Re: スクリプトの変数設定やフィールド設定で、テーブル名を変数のような方法で管理したいのですが方法はありますか?

チポ様

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

>Get ( アクティブフィールドテーブル名 )がありますから、
>いずれかのフィールドに移動すればそのテーブル名が得られます。
こんな便利な関数があるのですね!!それならば仰る通りテーブル名を変数にする必要はありません!!

>テーブル名不要で
>GetField ( "フィールドA" )
>これでいいです。
これは、そのテーブルに滞在しているから、わざわざテーブル名を指定する必要が無く、フィールド名の指定だけで希望する値が取り出せる、というような解釈で良いのでしょうか?


>フィールドDを計算フィールドとできない理由があるのでしょうか?
根本的には自分の設計に問題があると思うのですが、現在ECサイトのページを書き出すシステムを構築しているのですが、
計算フィールドを多用し過ぎてファイルがものすごく重くなってしまって、
その為になるべくテキストフィールドを使うようにしています。

計算式も、今回は例として分かりやすくするため短いですが、実際には色々なテーブルとリレーションして、
様々な情報をあっちこっちから引っ張ってくるような内容となっており、
また、現在計画している仕組みが膨大なページ数になる見通しなので、なるべく軽くしたいと思っています、、

別トピでも相談させて頂いており、そのコピペとなりますが、
以下のような仕組みを考えております。

------------------------------------------------

現在、ネット通販ページのソート機能(価格順、人気順、カラー別など)を疑似的にHTMLファイルのみで再現する仕組みを構築しており、
膨大な数のファイルを書き出すスクリプトが必要となっております。
※楽天市場やYahooショッピングでも使用する為、データベースから情報を引き出すような操作が出来ず、そのような設計を考えています。

ブランド毎のページ 37レコード
カテゴリ(大)毎のページ 18レコード ※トップス等
カテゴリ(小)毎のページ 42レコード ※Tシャツ等

上記の三種類のページ内で、

カラーで絞り込む(黒系、白系、赤系など全15色)
並び替え(価格順、人気順など全6通り)
表示切替(説明文を交え全カラーを表示させた詳細リストと、カラー毎に価格とレビュー点数・件数だけを掲載したサムネリストの2種類)

このようなソートが出来る仕組みを考えております。

そこで、以下のような54テーブルを用意し、

・ブランドページ 詳細リスト お勧め順
・ブランドページ 詳細リスト  価格安い順
・ブランドページ 詳細リスト  価格高い順
・ブランドページ 詳細リスト  レビュー件数順
・ブランドページ 詳細リスト  レビュー点数順
・ブランドページ 詳細リスト  月間売上順
・ブランドページ サムネリスト お勧め順
・ブランドページ サムネリスト  価格安い順
・ブランドページ サムネリスト  価格高い順
・ブランドページ サムネリスト  レビュー件数順
・ブランドページ サムネリスト  レビュー点数順
・ブランドページ サムネリスト  月間売上順
・ブランド×カラーページ サムネリスト お勧め順
・ブランド×カラーページ サムネリスト  価格安い順
・ブランド×カラーページ サムネリスト  価格高い順
・ブランド×カラーページ サムネリスト  レビュー件数順
・ブランド×カラーページ サムネリスト  レビュー点数順
・ブランド×カラーページ サムネリスト  月間売上順

・大カテゴリページ 詳細リスト お勧め順
・大カテゴリページ 詳細リスト  価格安い順
・大カテゴリページ 詳細リスト  価格高い順
・大カテゴリページ 詳細リスト  レビュー件数順
・大カテゴリページ 詳細リスト  レビュー点数順
・大カテゴリページ 詳細リスト  月間売上順
・大カテゴリページ サムネリスト お勧め順
・大カテゴリページ サムネリスト  価格安い順
・大カテゴリページ サムネリスト  価格高い順
・大カテゴリページ サムネリスト  レビュー件数順
・大カテゴリページ サムネリスト  レビュー点数順
・大カテゴリページ サムネリスト  月間売上順
・大カテゴリ×カラーページ サムネリスト お勧め順
・大カテゴリ×カラーページ サムネリスト  価格安い順
・大カテゴリ×カラーページ サムネリスト  価格高い順
・大カテゴリ×カラーページ サムネリスト  レビュー件数順
・大カテゴリ×カラーページ サムネリスト  レビュー点数順
・大カテゴリ×カラーページ サムネリスト  月間売上順

・小カテゴリページ 詳細リスト お勧め順
・小カテゴリページ 詳細リスト  価格安い順
・小カテゴリページ 詳細リスト  価格高い順
・小カテゴリページ 詳細リスト  レビュー件数順
・小カテゴリページ 詳細リスト  レビュー点数順
・小カテゴリページ 詳細リスト  月間売上順
・小カテゴリページ サムネリスト お勧め順
・小カテゴリページ サムネリスト  価格安い順
・小カテゴリページ サムネリスト  価格高い順
・小カテゴリページ サムネリスト  レビュー件数順
・小カテゴリページ サムネリスト  レビュー点数順
・小カテゴリページ サムネリスト  月間売上順
・小カテゴリ×カラーページ サムネリスト お勧め順
・小カテゴリ×カラーページ サムネリスト  価格安い順
・小カテゴリ×カラーページ サムネリスト  価格高い順
・小カテゴリ×カラーページ サムネリスト  レビュー件数順
・小カテゴリ×カラーページ サムネリスト  レビュー点数順
・小カテゴリ×カラーページ サムネリスト  月間売上順

※カラー別ページはキャラクター的に全カラー表示の詳細リストは不要なので、テーブルを用意しておりません

この54テーブルを、ブランド別のデータベースを抱えたテーブルや、商品別に価格などの情報を持ったテーブルとリレーションさせて、
そのリレーションのソートルールを価格の昇順や、レビュー件数順などに設定する事で、希望するHTMLソースをList関数などを用いて出力させようとしています。

カラーやソートなどのパターンを掛け合わせると、ザックリ計算しても約2万~3万ページが必要となるのですが、
基本的に上記の54テーブルは、全て同じ仕組みでHTMLソースを書き出すので、
一連のスクリプトを、テーブル名だけを変えて54回スクリプトを回せば出力できると見込んでおります。

この「一連のスクリプト」内では、複数回の「フィールド内容の全置換」関数が使用されるのですが、
現状はこの全ての関数に個別にアクセスして、テーブル名をプルダウンから選択する、という作業をしており、
更にはその作業をテーブル数である54セット繰り返さなければならず、かなりの作業量が見込まれます。

そこで、スクリプト冒頭でテーブル名を変数として設定し、以下のような形で、その冒頭の変数だけを変えれば全て片が付くスクリプトに出来ないかと模索しております。

例)

【変数を設定】 $テーブル名 → "ブランドページ 詳細リスト お勧め順"

【フィールド内容の全置換】GetField ( $テーブル名 & "::" & "フィールドA" ) → 計算式A
【フィールド内容の全置換】GetField ( $テーブル名 & "::" & "フィールドB" ) → 計算式B
【フィールド内容の全置換】GetField ( $テーブル名 & "::" & "フィールドC" ) → 計算式C
【フィールド内容の全置換】GetField ( $テーブル名 & "::" & "フィールドD" ) → 計算式D
【フィールド内容の全置換】GetField ( $テーブル名 & "::" & "フィールドE" ) → 計算式E
【フィールド内容の全置換】GetField ( $テーブル名 & "::" & "フィールドF" ) → 計算式F
【フィールド内容の全置換】GetField ( $テーブル名 & "::" & "フィールドG" ) → 計算式G
【フィールド内容の全置換】GetField ( $テーブル名 & "::" & "フィールドH" ) → 計算式H
【フィールド内容の全置換】GetField ( $テーブル名 & "::" & "フィールドI" ) → 計算式I
【フィールド内容の全置換】GetField ( $テーブル名 & "::" & "フィールドJ" ) → 計算式J
【フィールド内容の全置換】GetField ( $テーブル名 & "::" & "フィールドK" ) → 計算式K


-------------------------------------

別トピで既にご指摘頂いておりますが、そもそも、最終的にはHTMLページとして書き出したいので、フィールドに値を落とし込む必要すら無いのだと思うのですが、
では具体的にどうするのという事が一切見当もつかず、仕方なくアナログな方法で作業しています、、

Offline

#8 2020-06-16 13:43:03

チポ
Member

Re: スクリプトの変数設定やフィールド設定で、テーブル名を変数のような方法で管理したいのですが方法はありますか?

> GetField ( "フィールドA" )
これは、
この式が評価されるときのレイアウトのテーブルのフィールドAの値を返します。

ですから、今回の事例にはぴったりですね。


> 計算フィールドを多用し過ぎてファイルがものすごく重くなってしまって
必ずしも、計算フィールドだからということではないと思いますよ。
その引数に、リレーションの参照フィールドを使っているとか、
の要因が大きいでしょう。


それ以下の説明はあちらのすれでお願いします;;

Offline

#9 2020-06-17 00:43:42

chaco2008jp
Member

Re: スクリプトの変数設定やフィールド設定で、テーブル名を変数のような方法で管理したいのですが方法はありますか?

チポ 様

コメントありがとうございます!
GetField関数は、使い方を今回初めて知ったので大変勉強になりました!
ありがとうございます!!

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.009 seconds, 11 queries executed - Memory usage: 566.7 KiB (Peak: 587.6 KiB) ]