みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
OS:[ Windows8]
FileMaker Ver:[ 13]
宜しくお願い申し上げます。
最大で300文字程度の、文字列を含むデータがあります(内容は、商品の説明文になります。)
1つのレコードには、商品ID、商品名、製造年月日、商品説明(商品の説明文)、金額のデータ等が入ります。レコード件数は、1万件ほどです。
この、商品説明のフィールドを、例えばキーワード”A"で、検索をして、次に拡大検索でキーワード”B"で、次に更に拡大検索でキーワード”C"で・・・・・・
商品説明フィールドに検索をかけると、商品ID順で表示されてしまい、検索したキーワード順による配列での表示が出来ません。(検索キーワードは、任意の文字列です。)
(過去のを見ましたが、よく理解できませんでした。誠に申し訳ありません。)
どなたか、どうぞ宜しくお願い申し上げます。
思いついた方法で恐縮だけど
検索するたびに 検索番号をそのためのフィールドに設定して
それで並べ替えたらどうだろう?
Offline
シャチ様
早速のご連絡、大変有り難うございます。
検索番号フィールドを作りまして、まず、キーワード”A"で検索し、シリアル番号を入力しました。例えば、50個が検索されました(No1~No50)。
しかしながら、さらに、次に拡大検索で、キーワード”B"を入力して検索の場合、
新たに追加検索されたレコードの検索番号フィールドに、シリアル番号(No51~)を入力する方法が思いつきません。
なにか、良い方法がありましたら宜しくお願い致します。
初歩的な質問で大変もし訳有りません。
どうぞ宜しくお願い致します。
検索番号フィールドを作り、まず、キーワード”A"で検索し、シリアル番号を入力。次のシリアル番号を適当に保存。
キーワード”B"で検索し、取得しておいた次のシリアル番号を開始値にして、シリアル番号を入力。
最後に、シリアル番号のあるレコードを検索してソート、とするのが手っ取り早いでしょうね。重複とかがあるのでしたら、適当に除外するなどしておけばいいかと。
キーワードがあらかじめ羅列できるのであれば、全条件で or 検索しておけば良いのでは。検索モードで、その検索条件のキーワードを list() で取得しておいて、検索番号に、各レコードのキーワードのキーワードリスト内の位置を求めて設定すれば良いかも。
Last edited by Shin (2016-12-04 17:01:47)
Offline
Shin 様
ご連絡、大変有り難うございます。
またご指導の程、大変有り難うございます。
了解致しました。早速実行致します。
今後とも宜しくお願い申し上げます。
・以下を準備
・タイムスタンプ「検索日時」フィールドをフィールド追加し、
・1番目の絞込検索を実行。
・「検索日時」フィールドを<現在日時>で全置換する。
・グローバル変数「$$検索日時一覧」に<現在日時>の一行を代入。
・2番目の拡大検索を実行。
・「検索日時」フィールドを計算値で全置換する。
計算式:Case(「検索日時」が「$$検索日時一覧」にあるか; 「検索日時」; <現在日時>)
・「$$検索日時一覧」変数に<現在日時>の一行をリスト追加。
・以下2番と同じ処理を必要なだけ繰り返す。
・ ”
・ ”
・最後に「検索日時」フィールドを昇順ソートして完了。
Last edited by Hiro (2016-12-04 21:31:13)
Offline
Hiroさんのロジックもさっき思いついたのですが、先に書かれてしまった。
全置換で、空白ならばその時のタイムスタンプを設定、空白でなければさわらない(自分自身を設定) でも良いかと思います。
タイムスタンプが、タイミングによっては進む事も考えておく必要が稀にあるかもしれません。1秒前と合わせて2行追加すれば完全でしょう。
Offline
Hiro 様
Shin 様
ご連絡、大変有り難うございます。
素晴らしいです!
わざわざ、更なる検討をしていただきまして、大変有り難うございます。
早速、実行してみます!! 有り難うございました。
今後とも、宜しくお願い申し上げます。
ロジック説明を実際に実装するなら、検索後の2行の処理は統合して
●「検索日時」フィールドを以下の計算値で全置換。
と、1行処理に簡素化できます。
・1番目の検索の計算式は、
Case(
Get(レコード番号)=1;
Let([
$現在日時=Get(タイムスタンプ);
$$検索日時一覧=$現在日時
];
$現在日時
)
;
$現在日時
)
・2番目以降の検索の計算式は、
Case(
Get(レコード番号)=1;
Let([
$現在日時=Get(タイムスタンプ);
$$検索日時一覧=List($$検索日時一覧; $現在日時);
$置換値式="Case(FilterValues($$検索日時一覧; テーブル::検索日時)<>\"\"; テーブル::検索日時; $現在日時)"
];
Evaluate($置換値式)
)
;
Evaluate($置換値式)
)
Offline
Hiro 様
ご連絡大変ありがとう存じます。
またまた、貴重な時間を割いていただきましてありがとうございます。
(やはり、Hiro様は凄いです。)
早速、これからトライいたします。
今後ともどうぞよろしくお願い申し上げます。
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 534.18 KiB (Peak: 554.72 KiB) ]