みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
おはようございます。
いつも参考にさせて貰っています。
FMP17とFMS17、全てWinマシンです。
請求システムにて請求先を指定する際に上部グローバルフィールドに名称の一部を入力すると下部のポータル領域に該当する一覧を表示させるものを作っています。
漢字やひらがなのような2バイト固定文字は上手く引っかかるのですがカタカナや英文字のように全角、半角混在データーが上手くヒットしません。
例:名称フィールド 内容”ABC”(全角英数)
”ABC”(半角英数:WinだとF10)だとヒットせず
”ABC”(全角英数:WinだとF9)では当然ながらヒットする
現状ではデーター入力者にF10で引っかからなかったらF9で試してみてねと暫定的に作業してもらっていますが流石に入力効率が悪いです。
何かいい対処法はないでしょうか?
名称フィールド:索引全て、デフォルト言語”日本語”
名称フィールド同士をデカルトリレーションで組みポータルフィルターは「PatternCount ( 請求先_自己リレ::名称 ; 請求先_自己リレ::グローバル )」としています。
宜しくお願いします。
Offline
請求先の入力を、一定の規則に統一されるのが簡単でしょうね。
カタカナは全角、英文字は半角 にするのでしたら、そのフィールドの自動入力で、上書きを許可しておいて、
KanaZenkaku ( RomanHankaku (self )
としておくといいです。既存のデータは、全置換します。
元データをそのまま置いておくのでしたら、計算フィールドで同様のフィールドを作り、それを対象に検索すればいいでしょう。
Last edited by Shin (2019-04-17 12:30:52)
Offline
全レコードの元データを全置換するのはリスキーでしかも重負荷なので、
一過性の照合キー側を、そのフィルター条件式内でマルチキーワード化して、
OR照合するのが、本事案では正道でしょう。
Last edited by Hiro (2019-04-17 12:14:04)
Offline
Fileterは、こんな感じかなぁと思いますが、レコード数が増えると処理が遅くなるので、Shinさん案のようにデータを統一した方が検索速度が速いのです。
PatternCount ( 請求先_自己リレ::名称 ; 請求先_自己リレ::グローバル )
or
PatternCount ( 請求先_自己リレ::名称 ; RomanHankaku ( 請求先_自己リレ::グローバル ) )
or
PatternCount ( 請求先_自己リレ::名称 ; RomanZenkaku ( 請求先_自己リレ::グローバル ) )
or
PatternCount ( 請求先_自己リレ::名称 ; KanaHankaku ( 請求先_自己リレ::グローバル ) )
or
PatternCount ( 請求先_自己リレ::名称 ; KanaZenkaku ( 請求先_自己リレ::グローバル ) )
Offline
マルチキーサードにするとしても、全角半角が混在している可能性もあるので、現実的ではないでしょう。
PatternCount ( KanaHankaku ( RomanZenkaku ( 請求先_自己リレ::名称 ) ) ; KanaHankaku ( RomanZenkaku ( 請求先_自己リレ::グローバル ) ) )
という式でもいいと思いますが、対象レコードが多くなると、かなり遅くなると思います。
Offline
部分一致照合をポータルフィルターで賄う方法は、何れにせよ、処理スピードが問われるときは使えません。
その場合は、「マルチキーの部分一致照合」のカスタム・リレーション組むしかないでしょう。
※サンプルはここの過去ログにあります。
【提案修正】
文字種混在には、上述のキーワードのマルチキー化案は全く無意味でしたネ!
代わって、
「キーワード」と「対象データ」の双方 書式統一化 計算しておいて、
単に「部分一致照合」リレーションを組めば、最速ですネ。
※このリレーションサンプルも過去ログに公開してあります。
Last edited by Hiro (2019-04-17 18:29:01)
Offline
上記修正提案の実装サンプルをアップしておきます。
※単に標準リレーションの応用なので、ノーストレスでサクサク動きます。
●サンプル「曖昧照合.fmp12」 → https://yahoo.jp/box/u5sA7h
【サンプル・デモ画像】
(※グレーの計算フィールドは中間作業用で、あえて表示は無用です)
Last edited by Hiro (2019-04-18 02:52:24)
Offline
こんにちは。
Shinさん、Hiroさん、qb_dpさんご返答ありがとうございます。
”検索で探す”と”自己リレーションでフィルター掛ける”が同一結果になると思っていたのですが思うような結果が得られずに問い合わせた次第です。
皆さんのお答えから同一ではなく下準備が必要な事が分かりまた勉強させていただきました。
また、複数フィルター掛けると遅くなるという事なので逆に該当するようなダミーデータ作ってどの位速度に影響があるのか試してみたいと思います。
今回も皆さんに助けていただきました。
ありがとうございました。
Offline
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 524.97 KiB (Peak: 529.88 KiB) ]