みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつも勉強させていただいています。
検索について質問させてください。
チェックボックスにチェックを入れて複数条件を検索できるようなボタンを作りたいと思い、作業中です。
検索対象
①Aの担当者フィールド
②Bの担当者フィールド(①と同じ人もいる)
③日付フィールド=今日
④サイズ「大」「中」「小」
上記4点の複数検索条件をボタンで実行したいのですが
現状は、
⑤「検索モードに切り替え」ボタンと
⑥「検索実行」ボタン
を用意して、
上記4つのフィールドをチェックボタンで選べるように
表紙レイアウト(実際のデータ入力レイアウトではない場所)に配置して
検索しています。
できれば、
①Aの名前、②Bの名前ボタンを用意して
それを押すだけで
結果が出るようにしたいのですが
良い方法はありますでしょうか?
私がやりたさそうなことを調べるとリレーションの方法がWebには書いてあったのですが、
この場合、どれとどれをリレーションしたら検索に影響できるのかがわからず
担当者+今日の日付+サイズ、という組み合わせを一つずつスクリプトを書いたのですが
それだと、Aの担当者の名前とBの担当者の名前がかぶっているので
重複する名前が並ぶのが、気になってしまい、、、
できれば名前=1個のボタンで作成したいと思い
良い方法をさがしております。よろしくおねがいします。
検索対象のテーブルがどうなっているのか分かりませんが…概略としては、
1)検索窓となるグローバルフィールドを3つ作る(g_名前、g_日付、g_サイズ)
2)検索対象となるテーブルに検索判定用の計算フィールドを追加
( PatternCount( フィールド① ; g_名前 ) or PatternCount( フィールド② ; g_名前 ) ) and g_日付=フィールド③ and g_サイズ=フィールド④
3)上記フィールドが1となるレコードを絞り込んで表示
Offline
koedaさま
ご教授ありがとうございます。
>3)上記フィールドが1となるレコードを絞り込んで表示
こちらの意味がよくわからなかったです。
1になる組み合わせはありますが、、、
1と2は作れたように感じますが、うまくうごきません。
検索の組み合わせとしては
A担当者1~...+A日付(今日)+Size大
A担当者1~...+A日付(今日)+Size中
A担当者1~...+A日付(今日)+Size小
B担当者1~...+B日付(今日)+Size大
B担当者1~...+B日付(今日)+Size中
B担当者1~...+B日付(今日)+Size小
上記6パターン+担当者の人数分です。
最初の説明だと日付には一種類しかないように書いてしまいましたが
日付にもA用と,B用があります。(いずれも検索は「今日」でいいのですが)
ごく簡単なサンプルです。
https://www.dropbox.com/s/jbyvasp33nxto … fmp12?dl=0
あ、リレーションを削除するの忘れました。
この処理にリレーションは必要ないので、無視してください。
Last edited by koeda (2019-11-16 11:57:13)
Offline
>『動的で複雑な検索条件での検索は、』
条件設定を計算式で動的に立てられる
ポータルフィルターを利用する方法が、
非常に簡便です。
【設定手順】
複数キー設定用のチェックボックス・グローバルフィールドを必要なフィールド4個を作る。
①Aの担当者リスト
②Bの担当者リスト
③日付リスト
④サイズリスト
全件ヒットするデカルト積[X]の自己リレーションを用意する。
その[X]リレーションでポータルを配置する。
この[X]ポータルに下式のポータルフィルタを掛ける。
Case(IsEmpty(gA担当者); 1; FilterValues(gA担当者;X::A担当者)<>"")
and
Case(IsEmpty(gB担当者); 1; FilterValues(gB担当者;X::B担当者)<>"")
and
Case(IsEmpty(g日付); 1; Get(日付)=X::日付)
and
Case(IsEmpty(gサイズ); 1; FilterValues(gサイズ;X::サイズ)<>"")
このフィルタ付きポータルを選択しアクティブ状態にして、
移動元を明示してから、「関連レコードへ移動」で対象レコードを抽出して、
終了。
Offline
サンプルに手を入れて、ポータルを使う方法とリスト形式を使う方法の両方を示しました。
https://www.dropbox.com/s/m4dmtc7r4p36l … fmp12?dl=0
厳密にはyuke3さんの欲しい操作仕様(チェックボックスを使う)とは異なるのですが、
複数検索の考え方の参考にしていただければと思います。
また、サンプルでは日付も指定できますが、「今日」で固定ならば計算式に埋め込んでしまえば良いです。
ポータルフィルタについては、もともとあった表示判定の計算フィールドを利用しています。
ポータルの方がレイアウトは柔軟に作れますが、複数ページの帳票のようにリスト形式が必要なケースもあるかと思います。
どちらも考え方は同じです。
Last edited by koeda (2019-11-17 15:48:42)
Offline
遅さが気になってから考えてもいいかもしれないけど、条件でレコードにフラグを立てる方式だと索引が全く使えないので、普通に検索するのに比べて理論的には相当遅いはずです。どっちかというと「最後の手段」だと思うんだけど、、、
質問が今一わからないのですが、「チェックボックスで複数」というのは、A担当者を複数選択、などですよね?Bも複数選択、サイズは?
「①Aの名前、②Bの名前ボタンを用意してそれを押すだけで」だとサイズを選択するタイミングがありませんが。。。
それと「AとBで同じ担当者が出ないように1つのボタンで」というのがどう結びつくのかがわかりません。常に、選択した担当者をAとBの両方で検索する?
「Aが田中でBが佐藤」を探すようなことはありえないのでしょうか。
日付は今日の固定でいい様なので、担当者名とサイズを指定して、A,B のボタンを用意して、Aをクリックすると、A担当者フィールドで担当者、サイズの検索をする、Bをクリックすると、B担当者フィールドで担当者、サイズの検索をする、という動きなのでしょうね。
ならば、シンプルに、検索モードにして、ボタンそれぞれでフィールドを設定すればいいだけなのでは。
Offline
遅さが気になってから考えてもいいかもしれないけど、条件でレコードにフラグを立てる方式だと索引が全く使えないので、普通に検索するのに比べて理論的には相当遅いはずです。どっちかというと「最後の手段」だと思うんだけど、、、
なるほど、言われてみればその通り…ご指摘ありがとうございます!
操作仕様が明確になったら改めて考えます。
Offline
皆様
ありがとうございます。お返事が遅く、すいません、試していたらまったく理解できず、進めずにおりました。
koeda さんいろいろサンプルファイルありがとうございます。
Hiro様のに挑戦してみたのですが
「デカルト積[X]の自己リレーション」というのが私には高度すぎて、わからなかったです。すいません。
検索内容は
担当「あ」さんが今日入力した A担当分の大、中、小
担当「あ」さんが今日入力した B担当分の大、中、小
のそれぞれの数を
担当者全員分の検索条件が欲しいです。
変わるのは「あ」さん、が「い」さんになり、「お」さんくらい(5人程度)までの組み合わせです。
>#10『Hiro様のに挑戦してみたのですが「デカルト積[X]の自己リレーション」というのが私には高度すぎて、わからなかった』
全件をヒットする重宝なリレーションですのでこの機会にマスター下さい。
>#5で説明した内容を実装したサンプルをアップしましたので、内容解析ください。
●サンプル「動的複合マルチキー検索.fmp12」 → https://1drv.ms/u/s!AlaCGhTKTWEOp3o68iV … E?e=5mKFWX
Last edited by Hiro (2020-05-12 21:42:53)
Offline
目的はグループ分けした集計なんですから、
集計レイアウトでいいのでは。
しかし、
A担当者とB担当者
というのがよく分かりません。
1レコードに、どちらか片一方しか入らないのでしたら、
担当者フィールドを一つにして、担当フィールドを作ればいいです。
どちらにも入るならば、
AとB別々に集計することになるでしょうね。
それがダメなら、
1担当者を1レコードとした別テーブルを作って、
そちらで集計表示を考えればいいかと。。
Offline
1日分の集計をしてしまうサンプルです。最終的にはこのかたちが欲しいのでは。A, B の区別は無視しています。
https://www.dropbox.com/s/xe7pxpldhbkn7 … 2.zip?dl=0
Last edited by Shin (2019-11-20 16:26:25)
Offline
Shinさま
動きはこれがやりたかったことでした。
同じ動きができるように、仕組みをマネして、式や機能を理解してみたいと思います。
検証に少し時間がかかると思いますので、解決タグ、はもう少しあとで付けると思います。すいません。
チポ様
AとBの差は、「検品担当者」、と「撮影担当者」という作業内容が違うので、A,とBという意味で
その人達がその日1日、何件の仕事を行ったのか、という日報報告用に件数が知りたいのですが
作業している担当者はスマホからFMGoで操作しているのと、毎回同じ検索しかしないのでワンクックくらいで結果がわかる方法をさがしておりました。
Hiro様
やっぱりポータルが理解できず、エラーを解消できず座礁してしまいました。
これを機に、時間ができたらポータルを理解できるよう、もっとシンプルなケースで勉強してみたいと思います。
皆様、ありがとうございました。
一日 & 1担当者 ごとの別テーブルで集計をお勧めしますよ。
リレーションは、担当者だけで考えるとA、Bの二つ、
さらにサイズ別3種も考えると 2×3 = 6つのリレーション。
ベタベタですが、分かりやすい簡単な方法です。
別テーブルの毎日のレコード作成は、
インポートを使ってワンクリックでできるでしょう。
このレコード作成さえできれば、後はノータッチで集計できますね。
Offline
A,Bの区分を考えた集計です。
入力をするときに、A,Bの区分を設定するようにします。
https://www.dropbox.com/s/xe7pxpldhbkn7 … 2.zip?dl=0
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 564.38 KiB (Peak: 585.28 KiB) ]