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

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

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

You are not logged in.

Announcement

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


#1 2013-10-26 09:56:02

kn
Guest

(前掲示板からの続き) [2592] Re: [2580] クロス集計で条件にあったものだけ抽出するには?

> https://dl.dropboxusercontent.com/u/926 … 80.fp7.zip
> を参照ください

Shin様
わざわざサンプルを投稿してくださり、ありがとうございました。
おかげで、繰り返しフィールドの使い方が以前より理解できました。
また、これを少々アレンジして誰がどの講座を何回受けているかの一覧を表示するレイアウトを作ることまではできました。

ただ、これをどのように検索したら対象を絞り込めるのかが分りません。
例えば、ある講座を受けていない人だけを検索しようと、検索ボタンをおしてから、繰り返しフィールドの該当位置に0を入力して実行しても、そこに1が入っているものも出てきます。

あと、最終的にやりたいことは、
ある講座を受けていない人だけを検索したり、
全ての講座を受けてきっていない人だけを検索したり、
あるいはその逆で全ての講座を受けている人を検索したり、
あるいはまったく講座を受けていない生徒を検索したりということなのですが、
そのためにはどのようにしたらよいのでしょう?

#2 2013-10-26 12:56:50

Shin
Member

Re: (前掲示板からの続き) [2592] Re: [2580] クロス集計で条件にあったものだけ抽出するには?

とりあえず、未受講のある者の検索ができるように、スクリプトを追加して有ります。
繰り返しフィールドでの処理は、これが限界です。

最終的にやりたいことは、...

が出てくると思っていたのですが、これは、構造を全く変更しないと面倒です。
受講テーブルを、生徒、受講講座名、という構成にして、リレーションを使ったクロス集計を行なっていきます。

Last edited by Shin (2013-10-26 19:42:19)

Offline

#3 2013-10-26 13:23:09

kn
Guest

Re: (前掲示板からの続き) [2592] Re: [2580] クロス集計で条件にあったものだけ抽出するには?

返信ありがとうございます。

Shin wrote:

とりあえず、未受講のある者の検索ができるように、スクリプトを追加して有ります。
繰り返しフィールドでの処理は、これが限界です。

「スクリプトを追加して有ります」というのはどこにでしょうか?

Shin wrote:

最終的にやりたいことは、...
が出てくると思っていたのですが、これは、構造を全く変更しないと面倒です。
受講テーブルを、生徒、受講講座名、という構成にして、リレーションを使ったクロス集計を行なっていきます。

何か参考になるようなものはあるでしょうか?

#4 2013-10-26 17:27:04

Shin
Member

Re: (前掲示板からの続き) [2592] Re: [2580] クロス集計で条件にあったものだけ抽出するには?

ファイルを更新していますので、もう一度ダウンロードして下さい。

多機能の検索については、ちょっと思いついた事がありますので、少し時間を下さい。

Last edited by Shin (2013-10-26 17:27:39)

Offline

#5 2013-10-27 12:49:37

Shin
Member

Re: (前掲示板からの続き) [2592] Re: [2580] クロス集計で条件にあったものだけ抽出するには?

フラグフィールドをを作り、可能になりました。もう一度ダウンロードして、試してください。
https://dl.dropboxusercontent.com/u/926 … 80.fp7.zip
設定しやすいようなインターフェースは、作っていません。ご自分でお作りください。

ある講座を受けていない人だけを検索したり、

その講座のフラグのみを0、他の講座は空白にして、スクリプト実行
その逆も可能で、受けている講座を1にします。
複数の講座は or 検索になり、and 検索には非対応

その逆で全ての講座を受けている人を検索したり、

すべての講座のフラグを1にして、スクリプト実行

まったく講座を受けていない生徒を検索

すべての講座のフラグを0にして、スクリプト実行



全ての講座を受けてきっていない人だけを検索したり、

受けてきっていない、とはどのような事でしょうか。

Offline

#6 2013-10-28 01:07:55

kn
Guest

Re: (前掲示板からの続き) [2592] Re: [2580] クロス集計で条件にあったものだけ抽出するには?

Shin wrote:

フラグフィールドをを作り、可能になりました。もう一度ダウンロードして、試してください。
https://dl.dropboxusercontent.com/u/926 … 80.fp7.zip
設定しやすいようなインターフェースは、作っていません。ご自分でお作りください。

ある講座を受けていない人だけを検索したり、

その講座のフラグのみを0、他の講座は空白にして、スクリプト実行
その逆も可能で、受けている講座を1にします。
複数の講座は or 検索になり、and 検索には非対応

その逆で全ての講座を受けている人を検索したり、

すべての講座のフラグを1にして、スクリプト実行

まったく講座を受けていない生徒を検索

すべての講座のフラグを0にして、スクリプト実行



全ての講座を受けてきっていない人だけを検索したり、

受けてきっていない、とはどのような事でしょうか。

ありがとうございます。
「受けきっていない」といのは、講座をいくつか受けてはいるが、全ては受けてないという意味です。
今ダウンロードしたばかりなので、色々試してから後ほど報告させて頂きます。

#7 2013-10-30 21:58:10

kn
Guest

Re: (前掲示板からの続き) [2592] Re: [2580] クロス集計で条件にあったものだけ抽出するには?

Shin様ありがとうございます。
繰り返しフィールドの使い方と、既存のレコードを更新するためにインポートを使う方法など勉強になるところが大きかったです。
おそらくこれを知らなかったら、あるテーブルを別のテーブルの内容で更新しようとしたとき、loopとレイアウトの切替とかでやっていたと思います。

ところで、何回かスクリプトを実行していていると、いつの間にか生徒マスターテーブルに同一の「生徒no」のレコードが複数登録されるということが起きます。
本来ならインポートの際、「生徒no」フィールド同士を照合して、「未受講」フィールドを更新しているわけですから、同じ「生徒no」のレコードが追加されるのは解せないのですが、これはなぜなのでしょう?

あと、確認なのですが、インポート方法に「対象レコード内の既存のレコードを更新」といのがありますが、これは仮にインポート元が50件、インポート先に100件のレコードがある場合、インポート先の1~50番目までのレコードが更新され、51~100までのレコードは更新されないって事で良いですか?

#8 2013-10-31 09:23:55

Shin
Member

Re: (前掲示板からの続き) [2592] Re: [2580] クロス集計で条件にあったものだけ抽出するには?

繰り返しフィールドを分解するインポートなので、照合させることが難しいのです。
インポートの前に、以前のレコードを全削除するなどで逃げていただければいいかも。

既存レコードの更新でもいいのですが、インポートレコード数が既存より多い時は問題ないのですが、少ないと想定されたように既存レコードが残存します。それが問題なければそれでもいいです。

Offline

#9 2013-10-31 20:00:17

kn
Guest

Re: (前掲示板からの続き) [2592] Re: [2580] クロス集計で条件にあったものだけ抽出するには?

Shin wrote:

繰り返しフィールドを分解するインポートなので、照合させることが難しいのです。

FileMakerの機能的なことを知りたいので質問しますが、この場合、「繰り返しフィールドを分解する」ってことと、インポート時に照合フィールドで「一致するレコードを更新」するってことは関係ありますか?

インポートの部分だけ考えれば、単にタブで区切られたテキストをインポートしているに過ぎないと思うのですが、インポートによって、あるフィールド同士を照合させて、他のフィールドの内容を更新するという方法は保証されないのでしょうか?

#10 2013-10-31 20:09:01

Shin
Member

Re: (前掲示板からの続き) [2592] Re: [2580] クロス集計で条件にあったものだけ抽出するには?

繰り返しでない部分で照合したとすると、繰り返しだけの複数レコードが作成されますので、照合はできませんね。
繰り返し部分での照合を行おうとすると、うまく索引が作られていないのか、繰り返しフィールドの制限なのかよくわからないのですが、照合がうまく動かないのです。

ですから、インポートするテーブルをカラにしておいて、新規インポートするのが安全なようです。

Offline

#11 2013-11-01 02:05:56

kn
Guest

Re: (前掲示板からの続き) [2592] Re: [2580] クロス集計で条件にあったものだけ抽出するには?

Shin wrote:

繰り返しでない部分で照合したとすると、繰り返しだけの複数レコードが作成されますので、照合はできませんね。
繰り返し部分での照合を行おうとすると、うまく索引が作られていないのか、繰り返しフィールドの制限なのかよくわからないのですが、照合がうまく動かないのです。

ですから、インポートするテーブルをカラにしておいて、新規インポートするのが安全なようです。

今回のサンプルでは、インポート先のテーブル「生徒マスター」には「生徒no」と「未受講」という二つの(繰り返しではない)数字フィールドがあって、インポート元のテキストファイルも二つの数字がタブで区切られて並んでいる状態で、その上で、インポートの際、「生徒no」で照合させて、「未受講」を書き換えるというものになっていました。
なので、繰り返しフィールドとは関係ないような……。
何か見落としていますか?

それで、殆ど思いつきなのですが、「生徒no」フィールドのオプションで、入力値を常時制限するようにして、必要要件の「ユニークな値」にチェックを入れてみましたところ、同じ「生徒no」のレコードが重複することは無くなりました。

この様にテーブルAのあるフィールドをテーブルBのあるフィールドで置換したいという場合、一旦、テーブルBをエクスポートして、それをテーブルAにインポートするというやり方が一般的でしょうか?
それとも、より確実な方法はありますか?

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.011 seconds, 9 queries executed - Memory usage: 599.27 KiB (Peak: 616.18 KiB) ]