みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
トピック長くなってしまい申し訳ないです。
皆様回答ありがとうございます!
チポさん
なるほど、
①現在のレコードに全てフラグを立てる
②Aフィールドが「あ」または「い」で 絞り込み をかける
③Bフィールドが「う」または「え」で 絞り込みの拡大 をする
④Cフィールドが「お」または「か」で 絞り込みの拡大 をする
⑤フラグが立っていないレコードを除外する
この流れなら確かに目的のレコードを抽出できそうです。
フラグという単語でひらめきましたが、そもそも非保存の計算フィールドにこの条件式を書いてフラグ立てて
そのフラグを検索するというのもありですね!
動作速度は気になるところですが。
Shinさん
組み合わせの8条件を除外する方法は私の中では分かりやすくて好きです。
項目数が増えたとしてもループで対応できそうですし、別でフラグなども使わないのでどの環境でも使えそうですね。
ありがとうございます。
Mozさん
waderさん
そうですね、waderさんの仰る通り、その条件で検索すると例えば
Aフィールドが「あ」だけど Bフィールドが「こ」
みたいなレコードが、1回目の絞り込みで除外されてしまうのです。
ExecuteSQL()からの関連レコード移動もいいですよね。
そちらの方法も候補に入れておこうと思います。
すいません一部違っていました;;
「以外」が抜けていますね。
①現在のレコードに全てフラグを立てる
②Aフィールドが「あ」または「い」以外で 絞り込み をかける
③Bフィールドが「う」または「え」以外で 絞り込みの拡大 をする
④Cフィールドが「お」または「か」以外で 絞り込みの拡大 をする
⑤フラグが立っていないレコードを除外する
にゃるほど。waderさんの指摘で気付きましたが勘違いしていたようで......すんません。
Aの検索、Bの検索、Cの検索いずれかに合致したレコードが欲しいのですね。
スクリプトの流れは変えずに(検索条件を作るところは残したまま)
各検索結果をグローバル格納に取得して最後に関連レコード移動で表示するという考えにしてみました。
この手法ではユニークIDの一覧とグローバル格納のフィールドの2つと
グローバル格納のフィールドとIDによるリレーションを追加します。
# 「Aフィールド」が "あ" または "い" ではないレコードを検索
検索モードに切り替え [ 一時停止: オフ ]
フィールド設定 [ テーブル::Aフィールド ; "あ" ]
レコードを対象外に
新規レコード/検索条件
フィールド設定 [ テーブル::Aフィールド ; "い" ]
レコードを対象外に
検索実行 []
# 現在の検索結果を取得する
フィールド設定 [ テーブル::id グローバル ; テーブル::id 一覧 ]
#
# 「Aフィールド」が "う" または "え" ではないレコードを検索
検索モードに切り替え [ 一時停止: オフ ]
フィールド設定 [ テーブル::Bフィールド ; "う" ]
レコードを対象外に
新規レコード/検索条件
フィールド設定 [ テーブル::Bフィールド ; "え" ]
レコードを対象外に
検索実行 []
# 現在の検索結果を追記する
フィールド設定 [ テーブル::id グローバル ; テーブル::id グローバル & ¶ & テーブル::id 一覧 ]
#
# 「Cフィールド」が "お" または "か" ではないレコードを検索
検索モードに切り替え [ 一時停止: オフ ]
フィールド設定 [ テーブル::Cフィールド ; "お" ]
レコードを対象外に
新規レコード/検索条件
フィールド設定 [ テーブル::Cフィールド ; "か" ]
レコードを対象外に
検索実行 []
# 現在の検索結果を追記する
フィールド設定 [ テーブル::id グローバル ; テーブル::id グローバル & ¶ & テーブル::id 一覧 ]
# 関連レコード移動で検索結果を表示する
レコード/検索条件確定 [ ダイアログあり: オフ ]
関連レコードへ移動 [ 関連レコードのみを表示 ; テーブル: 「テーブル_絞り込み」 ; 使用するレイアウト: <現在のレイアウト> ] サンプル
https://yahoo.jp/box/09ddjI
Last edited by Moz (2019-02-06 10:54:10)
Offline
Mozさん
サンプルありがとうございます。
このやり方でいけますね!
こんな形かな
変数を設定 [ $A; 値:"あ¶い" ]
変数を設定 [ $B; 値:"う¶え" ]
変数を設定 [ $C; 値:"お¶か" ]
変数を設定 [ $i; 値:Let ( [$na = ValueCount ( $A ) ; $nb = ValueCount ( $B ) ; $nc = ValueCount ( $C )];$na * $nb * $nc - 1)]
検索モードに切り替え [ ]
Loop
レコードを対象外に
フィールド設定 [ テーブル::フィールドA; GetValue ( $A ; Mod ( $i ; $na ) + 1 ) ]
フィールド設定 [ テーブル::フィールドB; GetValue ( $B ; Mod ( Div ( $i ; $na ) ; $nb ) + 1 ) ]
フィールド設定 [ テーブル::フィールドC; GetValue ( $C ; Mod ( Div ( $i ; $na * $nb ) ; $nc ) + 1 ) ]
Exit Loop If [ Let ( $i = $i - 1 ;$i < 0 )]
新規レコード/検索条件
End Loop
対象レコードの絞り込み [ ]https://www.dropbox.com/s/jww3b3po2vf4j … 7.zip?dl=0
Last edited by Shin (2019-02-06 14:03:18)
Offline
Shinさん
サンプルありがとうございます!
ループでやる方法は、まさにこれですね!(私が考えていたよりずっとスマートになっていますが ^^; )
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 563.23 KiB (Peak: 582.98 KiB) ]