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

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

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

You are not logged in.

Announcement

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


#26 2014-11-09 12:58:49

けんた
Guest

Re: FileMakerで来訪管理(クロス集計?)

Shin wrote:

来訪_ の計算式を変更し、次の条件を追加します。
IsEmpty ( 来訪番号[1] ) ; "" ;
来訪番号を空白にしたダミーレコードを作れば良いです。日付は、その月内の適当な日付で。
運用上、月初めに月初日で全会員のダミーレコードを作っておけば良いかもしれませんね。会員テーブルからインポートで簡単に作成できます。

この方式だと、それしか無さそうですね。
ダミーを作るタイミングは、一月毎に固定だとしたら、月初めと新会員が増えたときということになりそうですね。
もし、期間を可変にするとしたら、期間を切り替える度にということになるのかな。

ところで、話は少し変わりますが、サンプルでは"□"をクリックした場合、スクリプトによって、該当レコードを追加する仕組みになっています。
これに"●"をクリックしたら、該当レコードを削除する仕組みを追加してみたのですが、わたしの考えた方法だとスクロールの位置が先頭に戻ってしまいます。
できたら画面の位置は変えたくないのですが、どのようにしたら良いでしょうか?

自分で試してみたのは次の通りです。※レコードを削除する部分だけを抜粋。

変数を設定[$date; 値:Substitute(テーブル::来訪年月 ; "."; "/")& Get(アクティブ繰り返し位置番号)]
変数を設定[$ID; 値:テーブル会員番号]
変数を設定[$recno; 値:Get( レコード番号 )]
検索実行[記憶する] ← 来訪日=$date And 会員番号=$ID And 来訪番号=0
対象レコードの削除[ダイアログなし]
レコードのソート[記録する;ダイアログなし]
レコード/検索条件/ページへ移動[ダイアログなし; $recno]

あと、「ウインドウ内容の再表示」というスクリプトステップがありますが、これはどういった場合に使うべきものでしょうか?
ヘルプの説明だけではピンと来なかったので、どういう場合はには必要で、どういう場合には必要ないというような例を教えて頂けると助かります。

#27 2014-11-09 14:04:49

Hiro
Member

Re: FileMakerで来訪管理(クロス集計?)

#25 NK wrote:

1)会員テーブルの「縦集計配列」の計算式、
  Case(日付配列<>""; 縦集計)
  の「日付配列<>""」はどういう条件・論理になっているんでしょうか。

日付配列[自分と同じ計算式繰り返し位置番号]の内容が空白でなければ、という条件。
繰り返しフィールド同士の計算で[位置番号]指定を省略すると、同じ[計算式繰り返し位置]のコマ同士を参照します。
なお、Not(IsEmpty(日付配列)) とも書けます。
また、 ≠ , ≥ , ≤ は <>, >=, <= (タイプし易い)と同じ意味です。


2)会員テーブルの「日付配列」の計算式、
   Let(
   [#dt=開始日[1]+(Get(計算式繰り返し位置番号)-1)];
   Case(#dt<=終了日[1] and FilterValues(#dt; ValueListItems(Get(ファイル名);"閉鎖日値一覧"))=""; #dt)
   )
   開始日[1]の[1]はどういう意味ですか?開始日は繰り返しフィールドでないのに
   繰り返し位置番号ですか?

繰り返しフィールドから非繰り返しフィールドを参照する場合の用法で、Extend()関数の簡略です。
忘れて省略してしまうと、1)で書いたようにそれぞれ自己のコマ位置を参照する仕様なので、結果として1コマ目しか値が入りません。
非繰り返しフィールドも、繰り返し回数が[1]の繰り返しフィールドだと考える分けです。

Offline

#28 2014-11-09 14:51:03

NK
Member

Re: FileMakerで来訪管理(クロス集計?)

Hiro wrote:

日付配列[自分と同じ計算式繰り返し位置番号]の内容が空白でなければ、という条件。
繰り返しフィールド同士の計算で[位置番号]指定を省略すると、同じ[計算式繰り返し位置]のコマ同士を参照します。
なお、Not(IsEmpty(日付配列)) とも書けます。
また、 ≠ , ≥ , ≤ は <>, >=, <= (タイプし易い)と同じ意味です。

ありがとうございます。
<>は ≠と同じなんですね。
何となくそういうことなのかなと思いましたが、論理的に??とひっかかっていました。
すっきりしました。


Hiro wrote:

繰り返しフィールドから非繰り返しフィールドを参照する場合の用法で、Extend()関数の簡略です。
忘れて省略してしまうと、1)で書いたようにそれぞれ自己のコマ位置を参照する仕様なので、結果として1コマ目しか値が入りません。
非繰り返しフィールドも、繰り返し回数が[1]の繰り返しフィールドだと考える分けです。

なるほど!勉強になります。
ありがとうございます!

Offline

#29 2014-11-09 15:28:45

けんた
Guest

Re: FileMakerで来訪管理(クロス集計?)

Hiro wrote:

#1の最初の質問で希望されたフルスペックの内容で、サンプルを作りアップしましたので参考ください。

ありがとうございます。
まさか、フルスペックでサンプルとを作って頂けるとは。
じっくりと、中身を見せて頂きます。

#30 2014-11-09 18:20:22

Hiro
Member

Re: FileMakerで来訪管理(クロス集計?)

【サンプル補足修正報告】

> 年齢が12歳未満:開始日の時点で12歳未満の人だけ表示する。生年月日が空欄の場合はこちらに含める。
空欄処理を忘れたので補足修正しアップし直しました。

●アップデートサンプル「会員来訪管理.fmp12」 → http://yahoo.jp/box/JGs16o

Offline

#31 2014-11-09 23:07:34

Shin
Member

Re: FileMakerで来訪管理(クロス集計?)

上の条件で抽出できる様に変更しています。
期間検索も含んでいます。
また、会員ごとの出席表が有れば便利だと思いますので、追加してあります。

https://www.dropbox.com/s/2xdms7mu867tc … 7.zip?dl=0

Last edited by Shin (2021-04-22 15:44:00)

Offline

#32 2014-11-10 22:53:00

けんた
Guest

Re: FileMakerで来訪管理(クロス集計?)

Shin wrote:

上の条件で抽出できる様に変更しています。
期間検索も含んでいます。
また、会員ごとの出席表が有れば便利だと思いますので、追加してあります。

サンプルありがとうございます。

「手動参加」スクリプトの中で、アクティブフィールドが●や○だった場合、フィールドを書き換えた後と、ウィンドウを閉じた後で、計2回、レコード/検索条件確定を実行していて、一つ目は分るんですが、二つ目はなぜ必要なのでしょうか?

あと、会員番号3のデータについてですが、2014/10/01~2014/11/30まで表示させると、10月と11月の各日の状況(□●○)が正しく表示されないようです。
最初の条件が、最大31日間ということでしたし、繰り返しフィールドも31個分しかないから、やむを得ないということでしょうか。

#33 2014-11-11 08:54:01

Shin
Member

Re: FileMakerで来訪管理(クロス集計?)

Ifの条件外の時にも、確定させたかったからなのです。本当は else の中に置いた方が良いかもしれませんが、手抜きをしています。
正しく無い表示は、内部の計算ミスがあり、ファイルを修正してあります。

Offline

#34 2014-12-06 05:25:34

けんた
Guest

Re: FileMakerで来訪管理(クロス集計?)

先月中旬からしばらくネットに繋げなかったり、FileMakerを触る機会が少なかったため返信が遅れてしまいました。

Hiroさん、Shinさん、修正されたサンプルのご提供ありがとうございました。


さて、Hiroさんのサンプルでいくつか質問がありますので、よろしければお教えください。

質問1

「会員」テーブルの「日付配列」フィールドの計算式が以下の様に定義されています。

Let(
 [#dt=開始日[1]+(Get(計算式繰り返し位置番号)-1)];
 Case(#dt<=終了日[1] and FilterValues(#dt; ValueListItems(Get(ファイル名);"閉鎖日値一覧"))=""; #dt)
)

上記の中で、#dtといのはローカル変数だと思うのですが、FileMaker Pro 12のヘルプ等を見るとローカル変数には $ 、グローバル変数には $$ の接頭語が付けられるとあります。
なぜこの変数には#がついているのでしょうか。

質問2

ヘルプの「ポータル内のレコードのフィルタリング」のページを見ると、

重要  集計フィールド、計算式、および検索条件の結果は、ポータル内のフィルタされたレコードだけではなく、関連レコード全体に基づきます。たとえば、フィルタされた一部のレコードを表示しているポータルで、ポータルの外にこれらのレコードを集計する「合計」集計フィールドがある場合は、集計フィールドは、表示されているレコードだけでなく、関連レコードすべての合計になります。

と、あるのですが、サンプルの場合、集計結果がフィルタされたレコードだけに限定されています。
この理由はなぜでしょうか?

質問3

これは勉強不足の部類で、本当はヘルプ等を探して解決したかったのですが、探しきれなかったので質問します。
レイアウトモードで、レイアウト「会員」内の「会員 X::生年月日」を見ると黄色い背景で黒いTの文字のアイコンがありますが、これはどういう意味でしょうか?

#35 2014-12-06 13:46:26

Hiro
Member

Re: FileMakerで来訪管理(クロス集計?)

質問1:「会員」テーブルの「日付配列」フィールドの計算式が以下の様に定義されています。

Let(
[#dt=開始日[1]+(Get(計算式繰り返し位置番号)-1)];
Case(#dt<=終了日[1] and FilterValues(#dt; ValueListItems(Get(ファイル名);"閉鎖日値一覧"))=""; #dt)
)

上記の中で、#dtといのはローカル変数だと思うのですが、FileMaker Pro 12のヘルプ等を見るとローカル変数には $ 、グローバル変数には $$ の接頭語が付けられるとあります。
なぜこの変数には#がついているのでしょうか。

●計算式内でのみ有効なローカル変数に限り、変数記号$を省略できます。
ただ、無印だと見分けが着け難いので、あえて明示的に(任意のカスタム)目印記号を附けているのです。
私の場合は#を使っていますが、FM予約文字以外ならなら何でも構いません。
●$ローカル変数は式内やスクリプト内で有効なため、思わぬ所で意図しない影響が出ることがあります。
それを避ける意味で、「式内で完結するローカル変数には変数記号を附けない」ルールづけが推奨されています。


質問2:ヘルプの「ポータル内のレコードのフィルタリング」のページを見ると、

ポータル内のフィルタされたレコードだけではなく、関連レコード全体に基づきます。たとえば、フィルタされた一部のレコードを表示しているポータルで、ポータルの外にこれらのレコードを集計する「合計」集計フィールドがある場合は、集計フィールドは、表示されているレコードだけでなく、関連レコードすべての合計になります。

と、あるのですが、サンプルの場合、集計結果がフィルタされたレコードだけに限定されています。
この理由はなぜでしょうか?

●逆に、フィルタ・ポータル内ならフィルター結果が反映されるので、
元ポータルの外に複製した1行ポータル内に入れてフィルター結果を反映処理させています。
●サンプルでは、複製1行ポータルの方にはあえて細い枠線をつけて視認できるよう一応配慮して有ったのですが気付きませんでした?


質問3:これは勉強不足の部類で、本当はヘルプ等を探して解決したかったのですが、探しきれなかったので質問します。
レイアウトモードで、レイアウト「会員」内の「会員 X::生年月日」を見ると黄色い背景で黒いTの文字のアイコンがありますが、これはどういう意味でしょうか?

●ポップアップ・ヘルプのアイコンマーク「T」です。
●「T」は、スタイルシートで云うところの「Title」の頭文字から来ているのかな?

Offline

#36 2014-12-08 17:55:10

けんた
Guest

Re: FileMakerで来訪管理(クロス集計?)

Hiroさんへ

よく分りました。ありがとうございました。

#37 2014-12-09 12:43:10

Layouter
Guest

Re: FileMakerで来訪管理(クロス集計?)

●ポップアップ・ヘルプのアイコンマーク「T」です。
●「T」は、スタイルシートで云うところの「Title」の頭文字から来ているのかな?

Tooltipですね。(ポップアップ・ヘルプといってるのは日本語版だけ)
強調文字のアイコンと同じになっちゃってるけど...

Registered users online in this topic: 0, guests: 2
[Bot] ClaudeBot (2)

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 12 queries executed - Memory usage: 602.05 KiB (Peak: 618.95 KiB) ]