みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM12です。
フィールドは「金額」「検索金額の選択(グローバルフィールド)」「金額の検索」を作成しました。
金額を検索するのに「検索金額の選択」の値一覧で選択させ、スクリプトで実行。
まずは「金額の検索」に計算式で変換させたいのですが変換できません。
ご指導宜しくお願い致します。
「検索金額の選択」の値一覧
100万未満
100万~200万未満
200万以上
「金額の検索」の計算式
Case (検索金額の選択 = "100万未満" ; " ≤ " & "999999";
検索金額の選択 = "100万~200万未満" ; "1000000~1999999";
検索金額の選択 = "200万以上" ; " ≥ " & " 20000000")
以上
Offline
検索の最終目的がいまいちわかりませんが
1:金額検索スクリプト作成
2:
IF(検索金額の選択 = "100万未満" )
検索実行 :金額:<1000000
Else if・・・と繰り返せばできるはず。
Offline
文字列で区分するのではなく、それをコード化して区分する方法もありますよ。
例えば、
Min ( Div ( 金額 ; 1000000 ) ; 2 )
という計算で、上の区分が、それぞれ 0, 1, 2 になります。値一覧もそれに応じてテーブル化したもので表示させると扱いやすくなります。
さらに、トリガーを使って腱索モードに入り、値一覧を表示させ、選択すると検索を行う、という流れが、トリガーを使うと実現できます。
ちょっと高度になりますが、そのサンプルです。
https://www.dropbox.com/s/2e8ulkrhu7s8i … 7.zip?dl=0
Offline
> "1000000~1999999"
これは
"1000000...1999999"
ですね。
Offline
> "1000000~1999999"
これは
"1000000...1999999"
ですね。
「金額の検索」の計算式に「...」をワープロし完成させました。
「金額の検索」の値をコピー&ペーストで「金額」に手動検索すると検索できましたが、
「金額の検索」を下記スクリプトに入れ替えると検索できません。
検索モードに切り替え
フィールド設定[金額;金額の検索]
フィールド設定[顧客名;顧客名グローバル]
フィールド設定[日付;日付グローバル]
レコード/検索条件確定
エラー処理 オン
検索実行
If[Get(対象レコード数)=0]
カスタムダイアログを表示[未検索です]
全レコードを表示
EndIf
エラー処理 オフ
フィールド設定[金額グローバル;””]
フィールド設定[顧客名グローバル;””]
フィールド設定[日付グローバル;””]
現在のスクリプト終了
Offline
フィールド設定[金額;金額の検索]
は、元の選択の文字列が入るので、手動で検索した時の様に、それを検索用の文字列に変換する必要がありますよ。
検索実行の前にスクリプトを一時停止させて、検索条件を確認してみるとよくわかると思います。
Last edited by Shin (2017-06-22 06:22:43)
Offline
>検索モードに切り替え
>フィールド設定[金額;金額の検索]
検索モードになった時点で、「金額の検索」フィールドの計算式は機能していないのではありませんか?
特に記述がないということはグローバルフィールドではないんですよね?
フィールド設定[金額;Case (検索金額の選択 = "100万未満" ; " ≤ " & "999999";
検索金額の選択 = "100万~200万未満" ; "1000000~1999999";
検索金額の選択 = "200万以上" ; " ≥ " & " 20000000")]
融通の利く書き方ではありませんが、計算式をフィールド設定時に使ってはどうでしょう。
Offline
皆様の意見を参考にしスクリプトに計算式を組み込み、金額の検索は出来ました。
このスクリプトは金額・顧客名・日付の全てを満たして検索させるのが目的ですが、顧客名グローバルを空白にしても顧客名が登録しているレコードもヒットします。
どの様に修正すれば良いのでしょうか?
変数を設定[$kingaku;Case (検索金額の選択 = "100万未満" ; " ≤ " & "999999";
検索金額の選択 = "100万~200万未満" ; "1000000~1999999";
検索金額の選択 = "200万以上" ; " ≥ " & " 20000000")]
検索モードに切り替え
フィールド設定[金額;$kingaku]
フィールド設定[顧客名;顧客名グローバル]
フィールド設定[日付;日付グローバル]
レコード/検索条件確定
エラー処理 オン
検索実行
If[Get(対象レコード数)=0]
カスタムダイアログを表示[未検索です]
全レコードを表示
EndIf
エラー処理 オフ
フィールド設定[金額グローバル;””]
フィールド設定[顧客名グローバル;””]
フィールド設定[日付グローバル;””]
現在のスクリプト終了
Offline
> 顧客名グローバルを空白にしても顧客名が登録しているレコードもヒットします
顧客名グローバルが空白の場合、顧客名が空白を検索したい?
ならば、空白の検索は検索演算子
「=」
を入力します。
範囲の検索の設定がまた間違っていますよ。
Offline
> 顧客名グローバルを空白にしても顧客名が登録しているレコードもヒットします
顧客名グローバルが空白の場合、顧客名が空白を検索したい?ならば、空白の検索は検索演算子
「=」
を入力します。範囲の検索の設定がまた間違っていますよ。
顧客名グローバルが空白の場合、顧客名が空白を検索したい?
⇒ その通りです。
空白の検索は検索演算子 「=」はスクリプトへの組み込み方が解りません。
具体的にはどうすれば良いのでしょうか?
検索範囲は...ですよね。実際はその様にしております。
何度も指摘頂き申し訳ないです。
Offline
フィールド設定の計算式を
Case ( IsEmpty ( 顧客名グローバル ) ; "=" ; 顧客名グローバル )
とすればいいでしょう。
Offline
チポ様
問い合わせ内容が間違っておりました。
顧客名グローバルが空白の場合、顧客名が空白を検索したい?
⇒ 空白の場合は検索しません。
検索の際の入力用として金額、顧客名、日付の三つのグローバルフィールドを作成しました。
入力したグローバルフィールドのみで検索する方法をご指導願います。
例えば金額と顧客名は入力するが、顧客名が未入力の場合は、入力した二つを満たすレコードを検索実行です。
申し訳ありませんが、改めてお願い致します。
Offline
グローバルが空白なら、検索対象にならないのなら、
そのフィールドは空白にして検索すればいいのですから、
最初に書かれた方法のままでいいのでは。
Offline
グローバルが空白なら、検索対象にならないのなら、
そのフィールドは空白にして検索すればいいのですから、
最初に書かれた方法のままでいいのでは。
チホ様
有難う御座います。
データを増やして試します。
Offline
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 593.41 KiB (Peak: 610.31 KiB) ]