みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Win7 FMProV12です。
検索レイアウトを作成中です。
例えば顧客名グローバルフィールドに「鈴木 一郎」と入力して検索したいのですが、宛名を正確に覚えていないことが度々あります。
そこで「鈴」と入力すると
「鈴木 一郎」
「鈴山 〇〇」
「鈴川 〇〇」
など候補名が入力画面のどこかに表示され、選択すると顧客名グローバルフィールドに「鈴木 一郎」と入力させることは出来るでしょうか。
これが出来ると大変助かります。
一つの方法として
1:氏名を宇治と名に分解
2:氏でリレーション
3:ポータルに表示
4:スクリプトで目的の行をクリックで データを目的にフィールドに入れる
というのはどうでしょう。
Offline
姓の最初の文字だけを取り出して動的値一覧という機能を使えば
できますよ。
Offline
わたし ないを難しく考えたんだ?
自己嫌悪
Offline
「値一覧|フィールドの値を使用」で目的のフィールドの値一覧を作成。
ドロップダウンリストで値一覧を使用してオートコンプリート をON
上記の設定で候補名が表示されます。
※文字を確定しないと候補リストが表示されないので使い勝手がイマイチなので、私はあまり使っていません.....。
私の場合、検索は、以下の流れのようにしていることが多く、宛名を正確に覚えていない場合でも大丈夫です。
リストレイアウトを作成し、グローバルフィールドの値「鈴」で検索、
「鈴木 一郎」
「鈴山 〇〇」
「鈴川 〇〇」
リストに表示された中から目的のレコードをクリック->詳細レイアウトへ移動
Offline
リレーションを使って、
ポータルフィルタで絞り込んだらいかがでしょう。
作り込めば、
「鈴」「一」
と入力して絞り込むことも可能でしょう。
Offline
名前を分解して、一部でもリレーションできるようにした
こんな方法です。
例えば 「安倍晋三」は
安
安倍
安倍晋
安倍晋三
倍
倍晋
倍晋三
晋
晋三
三
と変換したデータとリレーションキーでリレーションして
ポータルに表示します。
本当はカスタム関数がいいのですが
サンプルでは、スクリプトトリガで処理しています。
Offline
名前を分解して、一部でもリレーションできるようにした
こんな方法です。例えば 「安倍晋三」は
安
安倍
安倍晋
安倍晋三
倍
倍晋
倍晋三
晋
晋三
三
と変換したデータとリレーションキーでリレーションして
ポータルに表示します。本当はカスタム関数がいいのですが
サンプルでは、スクリプトトリガで処理しています。
シャチ様
サンプル作成頂き有難う御座います。
残念ですが、ホームページへのアクセス規制により開くことが出来ません。
dropbox はダウンロードできましたが、yahoo は駄目でした。
どうしましょう困りました。
ポータルフィルタなら簡単ですよ。
リレーションは「X」で、全レコードと照合させて、
ポータルでリストさせます。
そのポータルをフィルタで絞り込みします。
フィルタの条件式は入力を4文字までとすれば
Case ( Length ( 顧客名グローバル ) ≥ 1 ; PatternCount ( リレーション::姓名 ; Middle ( 顧客名グローバル ; 1 ; 1 ) ) ; 1 ) and
Case ( Length ( 顧客名グローバル ) ≥ 2 ; PatternCount ( リレーション::姓名 ; Middle ( 顧客名グローバル ; 2 ; 1 ) ) ; 1 ) and
Case ( Length ( 顧客名グローバル ) ≥ 3 ; PatternCount ( リレーション::姓名 ; Middle ( 顧客名グローバル ; 3 ; 1 ) ) ; 1 ) and
Case ( Length ( 顧客名グローバル ) ≥ 4 ; PatternCount ( リレーション::姓名 ; Middle ( 顧客名グローバル ; 4 ; 1 ) ) ; 1 )
ベタベタですが、分かりやすいでしょう。
ポータルのボタンで候補の中からクリックするとその行の姓名を得ることが出来ますよね。
Offline
ポータルフィルタは、画面更新や演算負荷で気に食わないケースもあるので、
シャチさんが紹介してる方法が好みです。
FileMakerの最も基本的な仕組みに則ってるんで動作も確実だし、
ver.7の頃から現在まで、安定して使い続けてます。
uni~Nまでのインデックスの作成は、Nを指定できるようにしておくと、
個人名のような短い情報だけでなく、色んな用途に使いやすくなります。
Advancedにペーストできるカスタム関数のXMLなら、
https://fm-aid.com/bbs2/viewtopic.php?pid=14520#p14520
にも掲載しました。
シャチさんのサンプルと合わせて、参考にどうぞ。
元祖チポさん発案の「前方一致」リレーション 或いは その発展型「部分一致」リレーション
の作り方は、以下の過去ログに一般公開してあります。
★★「前方一致・部分一致・重複除去」など 便利なカスタム照合リレーション 全5+1種を公開★★ → https://fm-aid.com/bbs2/viewtopic.php?id=4086
Offline
残念ですが、ホームページへのアクセス規制により開くことが出来ません。
dropbox はダウンロードできましたが、yahoo は駄目でした。
ん??yahooBox 公開になってるんですが・・・・
アクセス規制って、ひょっとして会社の?
だとすると管理者に ということになるですが
一度 yahoo Box にログイン登録してみてはいかがでしょう。
Offline
検索さんへ
私、DropBox使ったかことないのですが
https://www.dropbox.com/s/3djn9dxk7fjew … fmp12?dl=0
でアクセスしてダウンロードできますか?
Offline
検索さんへ
私、DropBox使ったかことないのですが
https://www.dropbox.com/s/3djn9dxk7fjew … fmp12?dl=0
でアクセスしてダウンロードできますか?
シャチ様
大変お手数をお掛け致しました。
こちらであれば見ることが出来ます。
使い方が分からずお尋ねします。
検索キーで「野」を入力すると検索結果に複数の名前が表示します。
野村 将希さんを選択しても何処にも変化はないのですが。
使い方が間違っているのでしょうか?
あぁ このファイルは、ただただ 名前の一部で該当するものをリストアップしているだけで
(その方法の紹介にすぎません)
この先の運用は、お使いになる方に委ねています。
使い方はいろいろあると思います。
例えば、クリックすると その名前をコピーする
といった使い方です。
Offline
シャチ様
1.「クリックするとその名前をコピーする方法」の方法がやっとできました。
検索結果フィールドのポータル内の::名前フィールドに対し
スクリプトトリガ設定のOnOpjectEnter を指定
変数を設定 $namae テーブル::名前
検索モードに切り替え
フィールド設定 テーブル::名前
検索実行
検索ができているのですが、これでよいのでしょうか。
チポ様
2.リレーションは「X」で全レコードと照合させて、ポータルでリストさせます。
そのポータルをフィルタで絞り込みします。
こちらも試しました。
Case ( Length ( 顧客名グローバル ) ≥ 1 ; PatternCount ( リレーション::姓名 ; Middle ( 顧客名グローバル ; 1 ; 1 ) ) ; 1 )
としましたが、
「山」と入力すると「山田」「山本」「丸山」と表示します。
「丸山」は不要ですが、この様な計算式なのでしょうか。
シャチ様
検索結果フィールドのポータル内の::名前フィールドに対し
スクリプトトリガ設定のOnOpjectEnter を指定
変数を設定 $namae テーブル::名前
検索モードに切り替え
フィールド設定 テーブル::名前
検索実行
これだとなんのための変数なのかわかりません
>フィールド設定 テーブル::名前
この設定で 変数を入れないと。。。
フィールド指定の下の 「指定..」に変数を入れます。
この辺りは
リファレンスをじっくり読んで慣れてください。
Offline
ん?
前方一致に限るのですか?
でしたら最初にそう書くべきでしたね。。
Hiroさんが提示されたリンク先の「前方一致」を見てください。
リレーションの照合でも、フィルタでも同じ考えで可能でしょう。
私が提示したフィルタの計算式なら、
Case ( not IsEmpty ( 顧客名グローバル ) ; 顧客名グローバル = Left ( リレーション::姓名 ; Length ( 顧客名グローバル ) ) ; 1 )
と変えればいいでしょう。
Offline
「前方一致」で良いなら、
前方一致照合リレーションで動的候補一覧を組めば一発解決です。
●サンプル「前方一致候補一覧.fmp12」→ http://yahoo.jp/box/m2-9Zu
Offline
ん?
前方一致に限るのですか?
でしたら最初にそう書くべきでしたね。。Hiroさんが提示されたリンク先の「前方一致」を見てください。
リレーションの照合でも、フィルタでも同じ考えで可能でしょう。私が提示したフィルタの計算式なら、
Case ( not IsEmpty ( 顧客名グローバル ) ; 顧客名グローバル = Left ( リレーション::姓名 ; Length ( 顧客名グローバル ) ) ; 1 )
と変えればいいでしょう。
最初から前方一致と記載すべきでした。
大変、失礼しました。
お蔭さまで出来ましたが、疑問が二つあります。
1.姓名に「やま」と入力し、Enterを2回押すとポータルに表示します。
1回目は漢字確定のためですが、2回目はFMの仕様で仕方がないのでしょうか。
素人の私には少し違和感があるのですが。
2.こちらのサイトで値一覧のオートコンプリートが紹介されていたので試しました。
ドロップダウンで表示する名前が実際より少ないように思えます。
ヘルプを読みましたが、制限があるとは思えないのですが。
追加の質問は、
べつににしませんか?
違う話なのでややこしくなります
Offline
1.姓名に「やま」と入力し、Enterを2回押すとポータルに表示します。
1回目は漢字確定のためですが、2回目はFMの仕様で仕方がないのでしょうか。
素人の私には少し違和感があるのですが。
サンプルは基本原理を説明するためのもので、簡潔に務めたものです。
遅らせながら、ご希望の「ENTERキーの1回押しだけ」を実装したアップデートサンプルを追加しました。
OnObjectModifyトリガスクリプトで実装した作例です。
●サンプル「前方一致動的値一覧.fmp12」→ http://yahoo.jp/box/dMWQul
Offline
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 615.62 KiB (Peak: 632.52 KiB) ]