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

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

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

You are not logged in.

Announcement

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


#1 2020-05-13 14:24:49

chaco2008jp
Member

スクリプト構築にあたり、アイデアを模索しています

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

以下のような事を実現出来る方法を模索しているのですが、良いアイデアが思い浮かばず、トピックとして投稿させて頂きました。

※以下は全てテキストフィールドです

【テーブルA】※フィールドが増える場合あり
カテゴリ名:靴、帽子、腕時計

【テーブルB】※フィールドが増える場合なし
カラー : 黒、茶、青

上記のようなテーブルがある場合に、スクリプトを使用してテーブルCに以下のようなレコードを自動生成したいです。

【テーブルC】

レコード1 カテゴリ名:靴 カラー:黒
レコード2 カテゴリ名:靴 カラー:茶
レコード3 カテゴリ名:靴 カラー:青
レコード4 カテゴリ名:帽子 カラー:黒
レコード5 カテゴリ名:帽子 カラー:茶
レコード6 カテゴリ名:帽子 カラー:青
レコード7 カテゴリ名:腕時計 カラー:黒
レコード8 カテゴリ名:腕時計 カラー:茶
レコード9 カテゴリ名:腕時計 カラー:青



今考えている方法は、テーブルAに以下のような計算式フィールドを用意し、

カラー黒 ="黒"
カラー茶 ="茶"
カラー青 ="青"

テーブルAから以下のようなCSVファイルをスクリプトで出力し、

CSV1「黒系」
カテゴリ名:靴 カラー黒:黒
カテゴリ名:帽子 カラー黒:黒
カテゴリ名:腕時計 カラー黒:黒

CSV2「茶系」
カテゴリ名:靴 カラー茶:茶
カテゴリ名:帽子 カラー茶:茶
カテゴリ名:腕時計 カラー茶:茶

CSV3「青系」
カテゴリ名:靴 カラー黒:青
カテゴリ名:帽子 カラー黒:青
カテゴリ名:腕時計 カラー黒:青


これらすべてのCSVをテーブルCにスクリプトでインポートするという方法です。

これならテーブルAのレコードが増えても対応出来ると思うのですが、
いまいちスマートでは無いように感じており、他に方法があればご教授頂きたいです。

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

Offline

#2 2020-05-13 15:48:58

チポ
Member

Re: スクリプト構築にあたり、アイデアを模索しています

テーブルAでテーブルBのカラーを繰り返しフィールドに持たせれば、
その繰り返し各回をレコードに分けてインポートできます。

Offline

#3 2020-05-13 16:04:19

himadanee
Guest

Re: スクリプト構築にあたり、アイデアを模索しています

ODBC共有を設定すれば、レコードのインポートで
SELECT * FROM A,B
でできます。

>【テーブルA】※フィールドが増える場合あり
レコードの間違いですか。

#4 2020-05-13 16:42:47

chaco2008jp
Member

Re: スクリプト構築にあたり、アイデアを模索しています

ご回答誠にありがとうございます!

チポ様

>テーブルAでテーブルBのカラーを繰り返しフィールドに持たせれば、その繰り返し各回をレコードに分けてインポートできます。
確かに繰り返しフィールドの方がスマートかもしれませんね!ありがとうございます!

himadanee 様

>ODBC共有を設定すれば、レコードのインポートでSELECT * FROM A,Bでできます。
非常に良さそうなアイデアですね!しかしながらODBC共有など自分は知識が無く、もし宜しければ当仕組みに関して参考にすると良いページなどございませんでしょうか?
自分で調べてみたのですが、求める情報が見当たりませんでした。

>レコードの間違いですか。
大変失礼しました!その通りでございます!

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

Offline

#5 2020-05-13 16:53:10

koeda
Member

Re: スクリプト構築にあたり、アイデアを模索しています

なぜCSVを経由しなければならないのでしょうか???

例えばテーブルAに"セーター"が追加されたとき、テーブルCに
レコード10 カテゴリ名:セーター カラー:黒
レコード11 カテゴリ名:セーター カラー:茶
レコード12 カテゴリ名:セーター カラー:青
の3レコードを追加すれば良いのであれば、テーブルBのレコード数分のループを回すだけで済みそうです。

1)カラーのリストを関数で取得する
2)カテゴリーのレイアウトにテーブルCのポータルを作成し(カテゴリでリレーションし、リレーションによるレコードの作成を許可)
3)ポータルの各行にカラーを順番にセットする

Offline

#6 2020-05-13 17:13:51

chaco2008jp
Member

Re: スクリプト構築にあたり、アイデアを模索しています

koeda 様

ご回答ありがとうございます!

>なぜCSVを経由しなければならないのでしょうか?
お恥ずかしながら知識不足なもので、自分が分かる方法の中で出来る限りのアイデアでございます、、
頂きました例のようにレコードが増えた際にそのような動きをすればCSVを経由しなくとも問題ございません!

また、アドバイス頂きました方法に関してですが、大変申し訳ないのですが具体的な設定方法などが分からず、
もし宜しければ以下ご教授頂ければと思います。。

> 1)カラーのリストを関数で取得する

こちらは具体的にどのような関数を使用するのでしょうか?取得と聞いて自分が分かるのはせいぜい「編集 / コピー」程度でして、、
私が挙げた例で言う所のテーブルBの内容「黒、茶、青」というデータを、どのように取得すれば良いのでしょうか?
list関数で指定したフィールドに「黒、茶、青」というテキストデータを出力させるような事は自分でも出来ますが、
今回の作業のような場合にどうすれば良いのか、宜しければご教授お願い出来ればと思います!

> 2)カテゴリーのレイアウトにテーブルCのポータルを作成し(カテゴリでリレーションし、リレーションによるレコードの作成を許可)

ポータルを作成し、リレーションシップの設定項目から「リレーションによるレコードの作成を許可」にチェックをつけました!

> 3)ポータルの各行にカラーを順番にセットする

恐らく(1)でアドバイス頂いたテーブルBのリストを関数で取得したものを使うと思うのですが、申し訳ございませんが具体的な作業方法が分かりません、、
もし宜しければご教授頂ければと思います!

Offline

#7 2020-05-13 17:29:12

koeda
Member

Re: スクリプト構築にあたり、アイデアを模索しています

サンプルを作成してみました。
https://www.dropbox.com/s/tmkkpph0gzw01 … fmp12?dl=0

実際にはカテゴリーの追加だけではなく、削除されたり、カラーも追加削除されるのではと思います。
CSVのインポートだと、重複を避けるための処理が楽に実装できるかもしれません。

Offline

#8 2020-05-13 18:19:42

chaco2008jp
Member

Re: スクリプト構築にあたり、アイデアを模索しています

koeda 様

サンプルまで作成して頂き本当にありがとうございます!諸々チェックさせて頂きました!
作成頂きましたスクリプトを見ましたが、使ったことも見たこともない関数や仕組みばかりで、お恥ずかしながらまだ理解出来ずにおります。。
「オブジェクト名」という概念があるのですね!こういった事も調べて初めて知りました!ひとつひとつ解読してみようと思います!

参考までになのですが、自分は初心者向けのファイルメーカー参考書は何冊か読みましたが、そういった書籍の中では、このような込み入ったスクリプトの構築などは紹介されておらず、
どういった情報を参考にこのような知識やテクニックを身につけられているのでしょうか?
もし使いやすい書籍やサイトをご存じでしたら是非ご教授頂きたいです!

Offline

#9 2020-05-14 08:35:58

koeda
Member

Re: スクリプト構築にあたり、アイデアを模索しています

サンプルに手を入れました。
https://www.dropbox.com/s/2fs2cozeniycm … fmp12?dl=0

テンポラリーテーブルにデータを作成してからインポートするようにしてみました。
これにより、カテゴリや色を追加した時に、重複を避けながらデータ生成を行えるようになりました。

FileMakerについての基礎知識は、この掲示板でもたびたび紹介されている公式トレーニング教材がおすすめです(無料)。
https://content.filemaker.com/fmb18_reg-ja

またClaris社のオンラインセミナーやYouTube等のセミナー動画でも学べます。
https://www.filemaker.com/jp/learning/webinars/

実践的な知識・テクニックは、市販の書籍を手当たり次第に読んでもなかなか身につかないと思います。
一つ一つの関数やスクリプトステップの意味や使い方はわかっても、それらをどう組み合わせたら良いのかまで踏み込んで解説している
解説書は滅多にありません。
これについては実際のソリューションを参考にするのが早道です。
私のばあい、FileMaker付属のサンプル、ネット上ブログなどで配布されているサンプル、このBBSなどに上がっているサンプル…
など先達の「作品」を解析することで「なるほど、こうやるのか!」と学ぶことが多いです。このBBSでも日々教えられています。

基本的にスクリプトは、手動で行える操作手順を記述して効率的に実行できるようにするものですから、
・どのような結果を得たいのか
・そのためにどのような操作を積み重ねれば良いか
をまず明確にしておく必要があります。
実はこの段階が難しく、これが明確になっていれば手順をスクリプト化することは難しくありませんし、
この掲示板でアドバイスを仰ぐこともできますよ。

一緒に頑張りましょう!(^^)!

Last edited by koeda (2020-05-14 13:23:11)

Offline

#10 2020-05-14 10:01:14

chaco2008jp
Member

Re: スクリプト構築にあたり、アイデアを模索しています

koeda 様

サンプル本当にありがとうございます!!内容を確認させて頂きましたが丁寧にコメントまで色々とつけて頂き、大変感謝しております!(そもそもスクリプトにコメントがつけられる事を初めて知りました、、)

>FileMakerについての基礎知識は、この掲示板でもたびたび紹介されている公式ガイドブックがおすすめです。
こんなものがあるのですね!!初めて知りました!!!これはファイルメーカーを使用する人は必ずチェックした方が良さそうですね!!

>Claris社のオンラインセミナーやYouTube等のセミナー動画でも学べます。
こんなものまで!大変参考になる情報をご提供頂き本当にありがとうございます!!

>実際のソリューションを参考にするのが早道です。
なるほど!さっそくkoeda先輩のサンプルから色々と学ぼうと思います!!
今までは市販の参考書に掲載されている関数リストを眺めながら、どんな使い道があるか自分なりに考えたりしていたのですが、
中々それだけでは具体的な使い道にたどり着くまで時間が掛かり、確かに出来上がったソリューションを分析した方が色々と早そうです!

コツコツと勉強してみようと思います!貴重なアドバイス本当にありがとうございました!!!!

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, 9 queries executed - Memory usage: 593.17 KiB (Peak: 610.08 KiB) ]