みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
検索用のレイアウトにあるフィールドに年齢(数字)を入力し、表示用のレイアウト上のフィールドにある年齢(数字)から、検索用のレイアウトに入力した年齢(数字)の以上・未満の数を抽出したいと思っています。
検索用のレイアウトにはフィールドは2つあり、一つは以上用、もう一つは未満用です。
検索用のレイアウトにあるフィールドはグローバルにしています。
検索モードに切り替え[ ]
①フィールド設定 [ 表示用フィールド年齢 ; 検索用フィールド年齢以上 ]
②フィールド設定 [ 表示用フィールド年齢 ; 検索用フィールド年齢未満 ]
検索実行[ ]
フィールド設定[ 該当件数 ; Get ( 対象レコード数 ) ]
①、②のフィールド設定に演算子をつけたりして試したのですができませんでした。
使用環境はFM14Pro MacOSです。
どなたかご教示お願いいたします。
Offline
どのような演算子を付けたのでしょう?
書かれている手順では
同じフィールドに[フィールド設定]を行っているので、検索時には2回目の[フィールド設定]だけが有効になります。
検索用と付いているフィールドがグローバル格納の数字フィールドと仮定して
[フィールド設定]は 1回だけ、xx以上xx未満ならば1例として以下とか。
検索用フィールド年齢以上 & "..." & ( 検索用フィールド年齢未満 - 1 )
Offline
Moz様
ありがとうございます!!
ご教示していただいたとおり、新規レコード/検索条件を挟み、入力したところ未満が以下となりましたが(-2でも変わりませんでした。)、一つ目の検索用フィールド(未満)はできました。
ただ、2つ目の検索用フィールド(以上)を同じように、& " > " & 等、色々と試してみたのですが上手くいきません。
申し訳ありませんが、再度のご教示お願いいたします。
Offline
テーブルの構造を教えて下さい。
検索対象となる年齢の数字が格納されているのは「表示用フィールド年齢」という認識で合っていますか?
[新規レコード/検索条件]のスクリプトステップはどこから出てきたのでしょう。
これを入れてしまうと1つ目の[フィールド設定]と2つ目の[フィールド設定]は
別々の検索条件となり、いわゆる OR 検索になってしまいます。
「検索用フィールド年齢以上」に入力された値以上かつ
[検索用フィールド年齢未満]に入力された値より小さい値(未満)が
「表示用フィールド年齢」フィールドに格納されているレコードを検索するであっていますか?
その場合は、
[検索モードに切り替え]一時停止はオフ
[フィールド設定]ターゲットは「表示用フィールド年齢」 計算式は検索用フィールド年齢以上 & "..." & ( 検索用フィールド年齢未満 - 1 )
[検索実行]
これで動作するでしょう。
Last edited by Moz (2018-03-09 14:54:03)
Offline
検索用フィールドが1個あって、それ以上のレコード数、それ未満のレコード数を数えて、それぞれを、表示用フィールド以上、表示用フィールド未満、に設定する、ということでは。
Offline
なるほど......
対象レコード数を完全に読み落としていました。最後に1ステップ追加で済みそうですね。
[フィールド設定]ターゲットは「該当件数」計算式は Get ( 対象レコード数 )
データベースの構造と 表示用レイアウト / 検索用のレイアウト の関係性がわからないとこれ以上は......
Offline
Moz様、Shin様
ご指摘ありがとうございます。
検索レイアウトには複数の検索フィールドがあり、その中の2つに年齢検索用のフィールドを用意しております。
一つは表示用のフィールド年齢の年齢未満を入力するフィールド。もう一つは年齢以上を入力するフィールドです。
それぞれが別の検索フィールドとなりますので、年齢未満を入力すると件数にその数が表示され、リセット(リセットボタン押)して、年齢以上を入力すると件数にその数が表示されるという形式です。
Moz様のご教示頂いた計算式を入力し、年齢未満を入力する検索フィールドの方は、動作はしていたのですが、先述したとおり「未満」が「以下」となった件数を抽出、表示しておりました。
[ 新規レコード/検索条件 ]を外したら、「未満」の件数を抽出できるようになりました。ありがとうございます。
[ 新規レコード/検索条件 ]を入れた理由が、検索レイアウトに複数ある別の検索フィールドの中に必要な式(複数の表示用フィールドの中から抽出するというもの)だったので、混同してしまい同じように入れてしまいました。
ただ、もう一つの検索フィールド(表示フィールド年齢の以上を抽出する)がどのように計算式を入力すればいいのかわかりません。
説明不足で申し訳ありませんでした。
お手数をおかけしますが、よろしくお願いいたします。
Offline
「表示用フィールド年齢」の値が
「検索用フィールド年齢以上」に入力された値以上を指すのであれば
検索用フィールド年齢以上 & "..."
他にも同じ意味の演算子はあります。ヘルプを参照しながら検索モードで探ってみることをおすすめします。
例えば20歳以上であれば検索モードでは 20... と入力して検索します。
これをスクリプトにしたときに計算式でどう表現するかという考え方が重要です。
20 がフィールドに格納されている値に置き換わるので 検索用フィールド年齢以上 & "..."となるわけです。
「...」のような演算子は文字列結合を用いて計算式内で表現します。
特定の範囲に一致する情報の検索
https://fmhelp.filemaker.com/help/16/fm … ect_header
Last edited by Moz (2018-03-09 17:29:46)
Offline
Moz様
初心者の私にとって大変勉強になります。ありがとうございます。
この検索レイアウトには、決定ボタンを一つしか設けていないので、「年齢未満」も「年齢以上」どちらかを入力して決定ボタンを押すことになるのですが、
>同じフィールドに[フィールド設定]を行っているので、検索時には2回目の[フィールド設定]だけが有効になります。
ということは、「年齢未満」の式と「年齢以上」の式は、1行にまとめて式を作成すれば良いのでしょうか?
Offline
maroさんの最終的な目的は何ですか?
ここまでの回答で #9 に対する答えは出ているように考えられます。
ここまでの私の各レス番号の内容は以下の解法を示しています。
#4 年齢が X 歳以上、Y歳未満 という2つの条件の検索の場合
#8 年齢が X 歳以上 という1つの条件の検索の場合
Offline
Moz様
ご教授ありがとうございます。
度重なる説明不足、申し訳ありませんでした。
今回作成しようとした構成は、検索用「以上」、「未満」フィールドが独立してそれぞれ一つずつ有り、どちらかを入力して「該当件数」に表示させるというものでした。※「該当件数」フィールドは一つなので、同時には入力しません。
検索用レイアウトには、複数の「検索用フィールド」が複数存在するのですが、「決定ボタン」を一つしか設けていませんでした。
Moz様のこれまでのご教示で、「決定ボタン」を追加することにより、解決することができました。
Moz様の的確かつ、丁寧でわかりやすいご教示がなければ、解決することができませんでした。本当に助かりました!!
少しずつ勉強していきたいと思いますので、今後とも宜しくお願いいたします。ありがとうございました!!
Offline
検索用のデータを入れるフィールドは1個で良かったのでは。ボタンを2個用意し、以上、未満を区別させればいいです。
どうしてもフィールドを2個用意したいのでしたら、その内容で処理を分岐することで、ボタンは1個でもいいですよ。
Offline
Shin様
アドバイスありがとうございます。
ご教授していただいた方法で、自分に合った配置をしたいと思います。
今後ともアドバイスよろしくお願いいたします!!
Offline
Pages: 1
[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 593 KiB (Peak: 609.91 KiB) ]