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

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

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

You are not logged in.

Announcement

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


#1 2016-08-26 15:58:19

条件抽出方法

お世話になります。

入室された時点と退室された時間を管理するテーブルAがあります。
(入室された時に入室日と入室時間が入ります。退室する時に退室日と退出時間が入ります。)

そこで、テーブルAで、入室日と入室時間 > 退出日と退出時間 のデータを抽出したものを
レイアウト上にデータを一覧表示したいのですが、
どのようにしてデータを抽出するのか分かりません。
よろしくお願いします。

レイアウトを開いた瞬間に抽出した結果の一覧が表示されるようにしたいです。

【データA】
氏名
入室日
入室時間
退室日
退室時間

Offline

#2 2016-08-26 16:16:32

旅人
Member

Re: 条件抽出方法

1レコードがどんな構成になっているのか分かりませんが
入室日と入室時間 > 退出日と退出時間
こんなレコードがあるのですか?

Offline

#3 2016-08-26 16:35:38

Re: 条件抽出方法

レコードのサンプルを記述させてもらいます。

氏名,入室日,入室時間,退室日,退室時間

日本太郎,2016/08/01,10:00,2016/08/01,10:25
アメリカ花子,2016/08/02,11:15,2016/08/04,10:00
中国次郎,2016/08/26,14:00,,


上記のレコードから退出されていないと判断できるのが、「中国次郎」のデータとなります。
「日本太郎」は入室日と退室日は同日ですが、入室時間と退出時間の比較で退室したことが判断できます。
「アメリカ花子」は入室日と退室日で判断可能です。
「中国次郎」は入室日しか入っていないので、まだ入室中となり、この方のでレコードが中質対象となります。

このように、大量のデータから、日付や時間から退室状況を判定したいのです。
先に記述しましたように、画面(レイアウト)を開いたと同時に、退室になっていない(中国次郎)方々の一覧に表示したいので、
その方法を教わりたいのです。

Offline

#4 2016-08-26 17:00:43

旅人
Member

Re: 条件抽出方法

そういうことでしたか・・・
退室日や退室時間フィールドの空白を検索するだけかと。
その検索条件を記憶した検索実行スクリプトを
レイアウトスクリプトのOnLayoutEnterトリガで実行?

Offline

#5 2016-08-26 17:39:47

Re: 条件抽出方法

旅人 wrote:

その検索条件を記憶した検索実行スクリプトを
レイアウトスクリプトのOnLayoutEnterトリガで実行?

なるほど。検索条件を検索実行スクリプトでスクリプトトリガで対応するんですね。
・・・・・・
検証してみましたが、どこかがおかしくて全件が表示されてしまいました。
検索条件を簡単なものにして下記に記述しましたが、スクリプトの指定が誤っていると思うのですが・・・?

「スクリプト」
検索/置換を実行[ダイアログあり:オン;(テーブルA::入室日 = テーブルA::退室日;次を検索]

全件画面に表示されてしまいます。
たぶん、選択しているスクリプトが違うのでしょうが、抽出したいレコードだけを画面に表示したい場合の
スクリプトはどのように設定するのでしょうか?

Offline

#6 2016-08-26 17:55:23

旅人
Member

Re: 条件抽出方法

検索/置換を実行とは違いますよ。
分かりやすいのは
手動で検索モードにして退室日フィールドに「=」を入れて検索します。
これで退室していない人が検索できるはず。
新規スクリプトを作って「対象レコードステップ群」にある「検索実行」
ステップを選んで「条件指定」を押すと、今行った検索条件が記憶されて
いるはず。あとはスクリプト編集を閉じるだけ。

Offline

#7 2016-08-31 16:44:35

Re: 条件抽出方法

【新規スクリプトを作って「対象レコードステップ群」にある「検索実行」ステップを選んで「条件指定」を押すと、今行った検索条件が記憶されているはず。あとはスクリプト編集を閉じるだけ。】とアドバイスを頂きましたが、何をどうして良いのか、自分の力が低すぎて理解できなかったので、いろいろと何度かチャレンジしてみました。(結果、だめでした・・・)

①手動で検索モードにて検索したい項目のフィールドに「=」を入れて検索は分かります。

でも、ここで完成させたい機能は、
画面が表示された段階で、検索キーを入れることなく、入室された物に対して、入室日 > 退出日となっているものの一覧を表示したいのです。

難しいですかね?


ということで、画面が開く時に、スクリプトか何かでテーブルのレコードから上記の条件の結果のレコードを表示したいスクリプトをどのように設定するのかが教わりたい点なんです。

Offline

#8 2016-08-31 16:57:48

Shin
Member

Re: 条件抽出方法

入力方法にもよるでしょうが、入退室をタイムスタンプで簡易rすれば、かなり簡単になります。今のままでも、それぞれの日時あらタイムスタンプを計算させれば良い。

気になるのは、入室日時 > 退出日時 の検索なんですが、退室が空白だと0と考えられる、という事を検索したい、という事でしょうか。それならば、退室日時が0の物を抽出するだけで良いはずですが。

Offline

#9 2016-08-31 17:17:39

Re: 条件抽出方法

早速の回答ありがとうございます。
退室日が0のものを抽出するだけで良いと思います。でも、実は、今後の事も考えて、複数条件の物を抽出する時になって壁にぶつかるよりは、現時点で複数条件の抽出方法(A項目とB項目で比較)で構築しておきたい事もあるのです。お手数かけてすみません。

Offline

#10 2016-09-02 09:05:19

チポ
Member

Re: 条件抽出方法

Offline

#11 2016-09-02 15:14:55

Re: 条件抽出方法

以下の画面(A画面)の表示内容の物を、B画面のように表示できるようにしたいのですが、その際にスクリプトを作成し表示させたいのです。

【A画面】(何も条件の無い時に表示される画面)
「氏名」     「入室日」   「退室日」
  山田太郎    2016/05/10   2016/05/11
  鈴木一郎    2016/08/26   
  加藤玲子    2016/08/26   2016/08/26
  佐藤花子    2016/08/27   
  伊藤次郎    2016/08/26   2016/08/21
---------------------------------------------------------------------

テーブルの一覧を画面に表示すれば、上記のようになると思うますが、ここで、「スクリプト」を使用し、入室したけど、退出していない人の一覧を、アプリ使用者が、わざわざ検索キーを入力しなくても、
画面Bを開いたら、「 入室日>退出日 」のレコードだけが表示させる検索スクリプトを教えて欲しいのです。

スクリプトを作成して、画面が表示されるイメージは以下の通りです。

①画面を開くと画面Bが表示されます。
【画面B】
「氏名」     「入室日」   「退室日」
  鈴木一郎    2016/08/26   
  佐藤花子    2016/08/27   
  伊藤次郎    2016/08/26   2016/08/21

とにかく、アプリの操作する人は、検索操作はしない。ただ画面に表示されたものが、入室日以降から退出日が入力されていないデータを閲覧できる画面にしたいのです。
スクリプトの設定方法を教えて欲しいです。(この条件のスクリプトが分かれば、他の仕様で、データ検索や抽出方法も流用できるのではと考えていますので、是非、スクリプトでの抽出方法が教わりたいのです)
よろしくお願いします。

Last edited by 初心者太郎 (2016-09-02 16:29:54)

Offline

#12 2016-09-02 16:07:59

チポ
Member

Re: 条件抽出方法

日付フィールドに
> 0000/00/00
この値は入力できませんが?


二つのフィールドの大小を条件とする検索はできません。
それを判定するフィールドを作ればそれで検索ができます。

Offline

#13 2016-09-02 16:19:38

Re: 条件抽出方法

チポ wrote:

日付フィールドに
> 0000/00/00
この値は入力できませんが?


二つのフィールドの大小を条件とする検索はできません。
それを判定するフィールドを作ればそれで検索ができます。

すみません。イメージで記載しました。例えば、000/00/00というデータがあったと仮定した形で記載しておりますので、実際の整合性とは合わなかったと思います(すみません)。
ここで知りたいのは、数あるスクリプトのうち、どのようなスクリプトを順序良く使っていけば、該当レコードだけが抽出できるかを知りたいのです。

データの整合性は意識せずに記載しておりますことをご了承ください。


> 二つのフィールドの大小を条件とする検索はできません。
2つの項目を比較することは、出来ないんですね。

#11の画面Bの様な抽出って、スクリプトでは難しいでしょうか?(多少の項目の整合性は無視して、条件設定した値が画面に出るスクリプトが知りたいです)

Last edited by 初心者太郎 (2016-09-02 16:26:36)

Offline

#14 2016-09-02 16:36:13

チポ
Member

Re: 条件抽出方法

退出日が空白
を検索すればいいのでしょう。

既にレスがありますよ。

Offline

#15 2016-09-02 16:42:36

scripter
Guest

Re: 条件抽出方法

空白でないのも検索することになってるので、計算フィールドを作っておいて
入室日 -  退室日
それを
>0
で検索すればいいでしょう。

#16 2016-09-02 16:47:14

Re: 条件抽出方法

何度も同じ事を申し上げるようで恐縮です。すみません。

お手数を掛けてしまうので、もう、これで最後にします。
仕様や要件を総合的に考慮すると、退出日を空白の物を抽出するだけで良いことは承知していますが、この先、Filemakerを使用する時に、様々な要件や条件抽出を対応する場面が出てくることを想定して、
複数条件の際には、どのような指定で抽出できるのかが知りたかったです。(退出日が空白の物を抜くことは分かっています)

#11で記載した画面Aの内容を訂正しました(0000/00/00を数値設定しました)。
以下の画面(A画面)の表示内容の物を、B画面のように表示できるようにしたいのですが、その際にスクリプトを作成し表示させたいのです。
【A画面】(何も条件の無い時に表示される画面)
「氏名」     「入室日」   「退室日」
  山田太郎    2016/05/10   2016/05/11
  鈴木一郎    2016/08/26 2016/07/01   
  加藤玲子    2016/08/26   2016/08/26
  佐藤花子    2016/08/27   2016/07/01
  伊藤次郎    2016/08/26   2016/08/21
---------------------------------------------------------------------
テーブルの一覧を画面に表示すれば、上記のようになると思うますが、ここで、「スクリプト」を使用し、入室したけど、退出していない人の一覧を、アプリ使用者が、わざわざ検索キーを入力しなくても、
画面Bを開いたら、「 入室日>退出日 」のレコードだけが表示させる検索スクリプトが知りたいです。
スクリプトを作成して、画面が表示されるイメージは以下の通りです。
①画面を開くと画面Bが表示されます。
【画面B】
「氏名」     「入室日」   「退室日」
  鈴木一郎    2016/08/26   2016/07/01
  佐藤花子    2016/08/27   2016/07/01
  伊藤次郎    2016/08/26   2016/08/21

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 10 queries executed - Memory usage: 557.33 KiB (Peak: 578.23 KiB) ]