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

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

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

You are not logged in.

Announcement

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


#1 2015-07-14 23:00:51

tester
Guest

日付範囲検索を計算フィールドのテキストタイプ(日付)に対して行う場合、問題ないでしょうか?

タイトル通りなのですが、計算フィールド(タイプ:テキスト)に対して日付範囲検索をしたいと考えていますが
不明な点が多く、相談させてください。

▼前提
下記のテーブルに、例のようなさまざまなレンタルレコードが作成されています。
*下記日付はすべてYYYY/MM/DDの形式で入力されています。

--レンタルテーブル--
・開始日:例2015/07/01(日付フィールド)
・終了日:例2015/07/04(日付フィールド)
・日付リスト :開始日~終了日の全日付を取得する計算フィールド(テキストタイプ)

7月1日
7月2日
7月3日
7月4日

▼検索スクリプト
-----------------------
スクリプト内容
変数$A:予約テーブル開始日(例2015/06/30)
変数$B:予約テーブル終了日(例2015/07/05)
レイアウト切り替え(レンタルリスト)
検索モードに切り替え
フィールド設定:日付リスト=$A & "..." $ $B
検索実行
If (Get(対象レコード数) > 0・・・・と続く)
-----------------------

▼▼質問1▼▼
変数$Aと$Bについてなのですが、変数を取得したときは
変数元は日付フィールドなのですが、変数にした時点ではテキストタイプになるのでしょうか?
それとも日付タイプのまま取得できてるのでしょうか?

▼▼質問2▼▼
上記スクリプトで、日付フィールドを検索してるわけではなく計算フィールドのテキストタイプに対して範囲検索って
何かおかしいなと思いつつ、検索結果が正しく返ってくるので、頭がこんがらがっています。

なぜか解りますでしょうか?

*ちなみに、日付リストのが日付桁数が揃っていない、/の代わりにカンマ等の場合は問題あったので、
YYYY/MM/DDに統一しました。

#2 2015-07-15 09:20:53

チポ
Member

Re: 日付範囲検索を計算フィールドのテキストタイプ(日付)に対して行う場合、問題ないでしょうか?

変数元は日付フィールドなのですが、変数にした時点ではテキストタイプになるのでしょうか?
それとも日付タイプのまま取得できてるのでしょうか?

元のフィールドタイプを引き継ぐ様ですよ。


日付フィールドを検索してるわけではなく計算フィールドのテキストタイプに対して範囲検索って
何かおかしいなと思いつつ、検索結果が正しく返ってくるので

書式がそろっていれば検索できるでしょう。

しかし、
日付書式はその設定や、マシンによって変わるので注意が必要でしょう。


そもそも範囲と範囲の検索は、
今回の例で言うと、
  レンタルテーブル::開始日 <= 予約テーブル::終了日
  and
  レンタルテーブル::終了日 >= 予約テーブル::開始日
で検索できます。
リスト不要ですね。


これをリレーションにすれば、検索不要で、
  関連レコードへ移動
で検索と同じ結果が得られますよ。

Offline

#3 2015-07-15 09:58:06

旅人
Member

Re: 日付範囲検索を計算フィールドのテキストタイプ(日付)に対して行う場合、問題ないでしょうか?

質問者さんはレンタル開始日か終了日のどちらかが期間内であるものを検索したいのですか。
レンタルテーブル::開始日とレンタルテーブル::終了日の両方とも期間外だと、レンタルされて
いるのに除外されてしまいそうですけど。

Offline

#4 2015-07-15 10:05:16

sorter
Guest

Re: 日付範囲検索を計算フィールドのテキストタイプ(日付)に対して行う場合、問題ないでしょうか?

解決は「リストを使わない」チポさんのでいいとして、
検索の疑問点については、==を使わない検索条件ですから単語単位で範囲内にある文字列を検索してます。YYYY/MM/DDに統一すれば1行1単語なので、「正しく」なります。

#5 2015-07-15 22:46:06

tester
Guest

Re: 日付範囲検索を計算フィールドのテキストタイプ(日付)に対して行う場合、問題ないでしょうか?

皆様、ご意見ありがとうございました。
情報が不足しておりましたが、検索したいのは予約希望者の開始日~終了日に該当するレンタルレコードがあるかどうかを調べたいと考えていました。

具体的な例としては、営業が出張で利用するiPadを2015/06/30~2015/07/05の予約希望をしている場合、
その日付範囲内でレンタル予約がすでにあると、予約できないようにしたいと考えておりました。


>>チポさん、ありがとうございます!
変数は元フィールドタイプを引き継ぐと覚えておきます!
そして・・・おっしゃるとおりの検索にすると、範囲検索もできました!こんな方法があるのですね・・・すごいです!
なぜこの検索式で出来るのか?解りませんでしたが、実際に日付を設定してニラメッコしたら解りました!
おっしゃるように書式は少し危険な感じがするので、教えていただいた検索式に変更します。


>>旅人さん、ありがとうございます。
レンタル開始日か終了日のどちらかが期間内であるものを検索ではなく、下記を考えております。
・予約希望期間にすでにあるレンタルレコードから1日でも関わっていればレンタル不可。
・予約希望期間にまだレンタルレコードがない場合、レンタルレコード作成して予約完了としたいと考えていました。


>>sorterさん、ありがとうございます。
検索1つとってもなんだか難しいですね。テキストタイプであったとしても文字列が統一されていれば、範囲検索が正しく出来るのですね。
勉強になりました!しかしやればやるほど、色んなことが出てきて、FileMaker面白いですけどなんだか不思議なことが多いです。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.112 seconds, 7 queries executed - Memory usage: 516.43 KiB (Peak: 520.97 KiB) ]