このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

Tango+FileMakerで日付による検索をしたいのですが・・・

発言者:DOMARU
( Date Monday, February 09, 1998 10:44:54 )


はじめまして、こんにちは!
DOMARUといいます。
Tango+FileMakerで開発をしておりまして、判らないことがあります。
検索条件として、入力した日付による検索を行いたいのですが、なかなかうまくいきません。
具体的には、「じゃま〜る」のサイトにみられるように、プルダウンメニューにより
入力された日付ごとで検索をしたいのです。

FileMakerで必要なフィールド、Tangoで必要な設定など判る方がいましたら教えていただけないでしょうか?

よろしくお願いいたします。

川原良一 さんからのコメント
( Monday, February 09, 1998 15:08:23 )

Tango Project Home PageのFAQに、FMの日付フィールドの検索に関する
問題点が出ていますが、ご覧になりましたか?

DOMARU さんからのコメント
( Monday, February 09, 1998 15:29:27 )

DOMARUです。
RESありがとうございます。

一応FAQは見ました。回避方法があるようですが、何分Database構築は初心者ですので
いまいち理解できませんでした。

以下は、メーリングリストで以前に流れてきたものです。

-------------------------------------------------------------------------------

Tangoの検索動作において日付型データに対する比較は動作いたしません。

回避策として以下の方法がございます。

以下はデータベースにファイルメーカーをご利用の場合の方法です。

・処理概要

ひとつの日付フィールドに対して、日付の範囲を比較させる2つフィールドを
用意し、クエリードキュメントで2つフィールドをグローバル変数によって
制御し、検索条件によって、該当データを取り込む処理となっています。
設定は以下のようにします。

・ファイルメーカー側の設定

まず、ファイルメーカー側で日付フィールドを用意します。
例えば、これをd1とします。
次にe1とf1フィールドを2つを追加します。
e1とf1フィールドはデータタイプを計算とします。

計算のオプション指定
e1=d1とし、計算結果を数字とします。
f1=Todayとし、上と同様にします。

・クエリードキュメントの設定

検索フォームビルダーから作成したクエリードキュメントを以下のように
追加及び変更します。

「追加」
Branch動作の条件
 <@GLOBAL date1> 等しい <@CURRENTDATE>
であれば、Formに行く分岐にします。

Search動作
 f1の結果を取得します。

HTMLのみ動作
グローバル変数を以下のようにセットします。
datecalc <@ACTIONRESULT Search1>
date1  <@CURRENTDATE>

「変更」

Form

検索フォームは日付を除く、検索フィールド(例:名前、分類等)を
記述します。
この場合はa1とします。

Search2動作

 検索条件を以下のように指定します。

  フィールド 演算子     値
     a1        前方一致  <@POSTARG a1>   
and   e1           >=      <@GLOBAL datecalc>
and   e1           <=      <@CALC "<@GLOBAL datecalc>+60">

これで、60日後(2ヶ月)までの該当レコードを表示させることが出来ます。


宜しくお願い申し上げます。

------------------------------------------------------------------------------

FM側の設定は何とか理解できます。

クエリードキュメントの設定は、どのように行ってよいか判らないのです。

どなたか上記の設定をご理解できる方いらっしゃいましたら、よろしくお願いいたします。

川原良一 さんからのコメント
( Tuesday, February 10, 1998 08:16:11 )

サポートかメールを書かれた方に直接おききになるのが
いいような気がしますが・・・

情報が足りないので、少し違うのですが、
以下のような感じではだめでしょうか?
(日付だけの検索)

・FMの設定はメールの通り
日付を数字(西暦1年1月1日(これが1)からの日数)に変換している。

・queryの記述
BranchToSearch1
BranchToSearch2
InvalidFunction
Stop
Search1
Stop1
Seatch2
Stop2

・流れ
(1)まずSearch1でf1の値(数字に変換された現在の日付)を取り込む
検索条件は固定で、適当に作ればいいと思います
(2)Search1の結果のHTMLに検索画面を作る。
例えば以下のようにして、検索条件を選択させる。
"レイアウト1.f1"は、Search1の検索結果。

<FORM METHOD=POST ACTION="<@CGI><@QUERYDOC>?function=search2&start=1">
<SELECT NAME="p1" SIZE=5>
  <OPTION VALUE=0>全て
  <OPTION VALUE=<@CALC <@COLUMN "レイアウト1.f1">-15>>2週間前
  <OPTION VALUE=<@CALC <@COLUMN "レイアウト1.f1">-8>>1週間前
  <OPTION VALUE=<@CALC <@COLUMN "レイアウト1.f1">-1>>今日
</SELECT>
<INPUT TYPE=RESET VALUE="値の初期化"> <INPUT TYPE=SUBMIT VALUE="検索">
</FORM>

(3)検索ボタンでSearch2に行き、検索を行う。
検索条件は、

レイアウト1.e1 > <@POSTARG p1>

川原良一 さんからのコメント
( Tuesday, February 10, 1998 08:32:25 )

つけたしです。
(木下@キー・プランニングさんのページでいま見たので(^_^;)
FMで、Todayは、ファイルの閉開を行わないと更新されないようですので、
日付をまたぐ場合には、工夫する必要があるということです。

DOMARU さんからのコメント
( Friday, February 13, 1998 22:49:21 )

お返事ありがとうございます。
DOMARUです。

上記の情報は、メーリングリストでサポートの方が流してくれたものです。
つい最近、Tangoのサポート、有料になってしまいましたからねー。

今週は仕事の関係で、全く作業が出来ませんでしたので、
週末に頑張ってみようかと思います。

また判らないことがありましたら、よろしくお願いいたします。