みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
環境
FileMaker Pro 16 or 15
やろうとしていること
レコードごとに表示するレイアウトが決められており(例. 性別フィールドの内容によって男性用レイアウト、女性用レイアウトでプリントする)、チェック用のフィールドに現在のレイアウトが正しいレイアウトかどうかが○×で表示されるのでこのフィールドによる検索で現在のレイアウトに対応するレコードを抽出する。
以下詳細
まず既存のファイルをデータ用の「データファイル」とし、新たにテーブルの無い表示用の「表示ファイル」を作成しレイアウト一式を表示ファイルに移植しました。
表示ファイルのテーブルオカレンスは外部参照のデータファイルのものになります。
主要フィールドは以下な感じです。
現在のレイアウト:Get ( レイアウト名 )
対応レイアウト:計算式で求められたレコードごとに対応するレイアウト名
レイアウトチェック:Case ( Exact ( 現在のレイアウト ; 対応レイアウト ) ; "○" ; "×" )
表示ファイル上で上記3つのフィールドの内容は正しく表示されています。
ここで「レイアウトチェック」の内容を○で検索すると、想定では現在のレイアウトに対応したレコードが抽出されるはずが該当なしとなり、×で検索すると全件が対象になります。(元のデータファイル上では想定通りの結果になります)
データファイルを開きこちらの例えば男性用レイアウトを表示させた状態で表示ファイルで検索を行うと表示ファイルのレイアウトに関係なく男性用レイアウトが対象のレコードが抽出されます。
表示は問題ないのですが検索時に限って計算式のあるデータファイル側の状況で判定されているようです。
これを索引オプションをいじるなり計算式を変更するなりしてレイアウトチェックフィールドでの検索で正しい結果を出すようにすることは可能でしょうか。
よろしくお願いします。
念のための補足
あくまで上記フィールドの○×での検索が可能かどうかの質問なので例えの性別フィールドで検索して対応レコードを抽出するといった別手段は今回取り扱いません。
またデータファイル側の各レイアウトは今回検証用に表示させただけで実際には隠しています。
現在のレイアウト が、索引保存になっているのでは。
これを、計算結果を保存せず、必要時に計算 に変更してみては。
Offline
Shinさん
ありがとうございます。
確認しましたが「計算結果を保存せず必要時に再計算する」はチェックがついてます。
「対応レイアウト」「レイアウトチェック」も同様の索引設定になっています。
試そうとしたまま忘れていたのでシンプルなDBを新たに作ってみたのですがこちらでも同様にデータファイルに影響する検索結果になるようです。
本来なら問題なく表示ファイル側の表示レイアウトに則した検索結果になるものなんでしょうか。
その計算フィールドのコンテキストの設定を確認してみてください。
https://fmhelp.filemaker.com/help/17/fm … 3ww1098829
Offline
Shinさん
ありがとうございます。
リンク先の内容は把握してると思います。
照合フィールドが違うと結果は異なるからコンテキストは適宜切り替えようね程度ですが…
念のためサンプルファイルをアップしてみました。
https://www.dropbox.com/s/73ydwneupqexr … e.zip?dl=0
#1に書き忘れてましたがOSはmacOSです。
根本的な考え違いをしてないといいんですけど、テーブル自体はデータファイルに1つなのでこれをどう当てはめるかはもう少し考えます。
それでしたら、取得関数の動きでしょう。
取得関数は、その時の状態を取得するものですから、検索モードでは実レコードを評価できないので、直前に持っていた値などを参照してしまう可能性が高いでしょう。
検索条件を考え直すことをお勧めします。例えば、レイアウト名 フィールドを、 Get ( レイアウト名 ) で検索する、など。
Offline
現状の構成だと該当フィールドでの検索はなかなかうまくいかないものなんですね。
こちらでの検索はできないようにし別の検索条件を使用するようにします。
ありがとうございました。
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 518 KiB (Peak: 522.91 KiB) ]