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

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

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

You are not logged in.

Announcement

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


#1 2022-03-06 09:14:56

zouno33
Member

同じレコード内の別々のフィールドの値を、共通のフィールドにそれぞれ別レコードに記録したいです。

フィールドaにカンマ区切りの文字列があります。
あか,あお,きいろ,みどり,ぴんく,
aの内容はレコード毎に違い、5個のこともあれば、3個しか無いこともあります。5以上にはなりません。
フィールドb〜fに、aの内容をカンマ区切り毎に切り分ける式を書いて、内容をそれぞれ格納しました。
そんなレコードが100あります。
全てのレコードのフィールドb〜fのそれぞれの値をマージして、別テーブルのひとつのフィールドにまとめたいです。
どうするといいですか?

具体的には、複数のwebサイトを見て、キーワードを抽出しています。
いくつかの共通するワードが集まるので、ワード毎に何件あるかの件数を求めたいです。
excelでなら、b〜f列の内容を一つの列にマージして、countifで、同じワードの個数を求める。のをFileMakerでやりたいです。

マージフィールドは違いますよね?
言葉の言い回しが違いますか?
マージして得たいのは、全数、個別の数、独立した単語が全数分です。

Offline

#2 2022-03-06 13:02:49

himadanee
Guest

Re: 同じレコード内の別々のフィールドの値を、共通のフィールドにそれぞれ別レコードに記録したいです。

5個のフィールドでなく(そこからでもいいですが)繰り返し5の1つのフィールドに入れると、レコードのインポートの「繰り返しをレコードに分割」で1レコード1値にできます。

#3 2022-03-06 22:23:18

zouno33
Member

Re: 同じレコード内の別々のフィールドの値を、共通のフィールドにそれぞれ別レコードに記録したいです。

ご教示ありがとうございます。
教えていただいた説明がさっぱりわかりません。

フィールドの「繰り返し」を5に設定しました。
ちまちまと、値を入力して行きました。それをエクスポートしました。
そして、新規でテーブル作ってインポートしようとしましたが、繰り返しフィールドのプルダウンがグレーアウトしていて選べません。

最初の、フィールドに入れるのは何を入れるんですか?。
すでにある、カンマ区切りの値を1つのフィールドのそのままを「入れると」の入れ方がわかりません。

レコードのインポートは、何を入れるんですか?。
「1つのフィールドに入れると、」と「レコードのインポートの」との間に何か手順があるけど説明されてない?
と思うのですが、そこが解決しないので、さっぱり意味がわかりません。
「1つのフィールドに入れると、」の部分がわからないので、当然かも知れません。

どう聞くのがいいのか、聞き方から教えてもらえるとありがたいです。
よろしくお願いします。

Last edited by zouno33 (2022-03-06 22:24:10)

Offline

#4 2022-03-07 07:11:46

himadanee
Guest

Re: 同じレコード内の別々のフィールドの値を、共通のフィールドにそれぞれ別レコードに記録したいです。

5個のフィールドに入れる計算はできてたので、繰り返しもできるかと思ったんですが

1つの繰り返しフィールドに入れます。
計算タイプでいいです。
Choose ( Get(計算式繰り返し位置番号) - 1 ; b ; c ; d ; e ; f )
(5個のフィールドに入れるのを応用すればここは b~f でなく a を使った計算式にもできますが、長くなります)

インポートします。
「インポート順の指定」のダイアログで一番下にある「繰り返しフィールド」オプションを「レコードに分割」
>繰り返しフィールドのプルダウンがグレーアウトしていて選べません。
これはインポートのソースフィールドが繰り返しの場合しか指定できないからです。(旧バージョンと違ってフィールドごとに指定できる)

以上、手順は2つです。

#5 2022-03-07 09:00:33

チポ
Member

Re: 同じレコード内の別々のフィールドの値を、共通のフィールドにそれぞれ別レコードに記録したいです。

マージ
って
統合、併合
のような意味ですよね。

100レコードの、各5フィールドを全部まとめて一つのフィールドに入れる
っていうこと?

集計が目的なら、
himadaneeさんの解釈でいいと思いますが。。

Offline

#6 2022-03-07 23:34:46

zouno33
Member

Re: 同じレコード内の別々のフィールドの値を、共通のフィールドにそれぞれ別レコードに記録したいです。

ご教示ありがとうございます。
ちょっとやってみたのですが、上手くいかなかったです。
疲れてるせいだと思います。週末にゆっくりやってみようと思います。
ひとまずお礼だけ。

やったこと。
一つのファイルに、テーブルが2つあります。
カンマ区切りのフィールドと分割されたフィールド。の入ったテーブルA。
教えていただいた式を入れた計算フィールドaと、空のb〜fのフィールドのあるテーブルB。
テーブルAのa〜fのフィールドをエクスポートし、
テーブルBでインポート。計算式を入れたフィールドaにカンマ区切りのデータをインポートしようとすると、
インポート不可と表示されます。
できないので、空のb〜fのそれぞれにそれぞれのデータをインポート
結果、aにbのデータが表示され、あとはそれぞれのデータが表示されます。
aにインポートできないのは、計算式だからだという考えに至り、
計算式を入れたフィールドgを用意してインポートしよう取ると、
aと同じくインポート不可と表示されます。

何がちがうのでしょう?。

Offline

#7 2022-03-08 07:01:09

himadanee
Guest

Re: 同じレコード内の別々のフィールドの値を、共通のフィールドにそれぞれ別レコードに記録したいです。

計算タイプのフィールドは、計算結果を表示するので、他の値を入力したりインポートしたりはできません。(これはExcelで計算式を入れたセルと同じことです。計算式はセルを保護してなければ上書きできますが、データベースでは1つのフィールドは全レコードで同じ設定になるし、レコードごとに上書きしたりはできません)

#4の計算式は、インポートのソースを作るためのものなので、元のデータがあるテーブルAにフィールド(名前はzでも何でも)を1つ作り、計算タイプとし、計算式を入れ、繰り返し数を5にします。
結果は、フィールドb~fの値が繰り返しの1~5に入ります。

と書いてから計算式の間違いに気づきました。すいません。(しかしこれはインポートがうまくいかなかったのとは関係ありません)
Choose ( Get(計算式繰り返し位置番号) - 1 ; b[1] ; c[1] ; d[1] ; e[1] ; f[1] )
と、各フィールド名に[1]を後置しないといけませんでした。(繰り返しの何番目の計算でも、参照するフィールドの1番目の繰り返し(繰り返しでないフィールドは繰り返し数1のフィールドとなる)を参照するという意味です。これを書かないと、2番目のフィールドでは存在しないb[2]、などを参照して計算してしまう)

インポートのターゲットのテーブルBは、フィールド1つだけで計算も繰り返しも設定しません。ここへA::z(テーブルAのフィールドzはコロン2個で区切ってこのように書くのがFMの規則)をインポートします。

#8 2022-03-10 03:53:56

zouno33
Member

Re: 同じレコード内の別々のフィールドの値を、共通のフィールドにそれぞれ別レコードに記録したいです。

変な時間に目覚めて、すっきりした頭で検証すると理解できて、実現できました。
ありがとうございます。
集計目的なので、欲しい結果が得られました。

まとめると、
1_個別の値をひとつにまとめる指示がわからなかった
・元々の塊を個別に分けてる。そこで自分の頭の中では処理が終わっていた。
・Chooseの意味が理解できてなかった。(b〜fの値をひとつにまとめるのは、&で文字列を繋ぐのとは意味が違う)
2_エクスポートの形式が正しくなかった
・csvで出力するのが絶対で、それ以外考えられなかった。
・csvファイルをエディタ(Mac環境なため、miエディタ)にて、中身を見ると、文字列の区切りにカンマが入って無くて、気付いた

だから、話しが通じなかった。です。
多分、まとめ2が致命的で、まとめ1は無知で怠慢でした。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 540.67 KiB (Peak: 561.21 KiB) ]