初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2023-07-14 15:07:50

Marty
Member

部分一致レコードをポータルに表示する方法

こんにちは。
Filemaker Pro 17を使用している初心者です。

リレーションを利用して
ポータルに関連レコードを出したいと思っています。
ですが完全一致ではないレコードを拾うことは可能でしょうか?

例えば
テーブル1     テーブル2
山田        山田太郎
佐藤        山田花子
渡辺        佐藤一
          渡辺次郎
          小山田三郎

このような場合、テーブル1のレイアウトで
最初のレコード(山田)にいる場合
テーブル2の山田さん2名、小山田さん1名をポータルに表示したいです。
何卒よろしくお願い致します。

Offline

#2 2023-07-14 15:18:15

himadanee
Guest

Re: 部分一致レコードをポータルに表示する方法

テーブル1に計算フィールドを追加してそれでリレーションすれば可能です。
ExecuteSQL("SELECT f
FROM \"テーブル2\"
WHERE f LIKE ?
";"";"";"%" & f & "%")

fはフィールド名です

#3 2023-07-14 15:31:37

チポ
Member

Re: 部分一致レコードをポータルに表示する方法

ポータルに表示だけでいいのなら、

フィルタ条件を
  PatternCount (テーブル2::姓名 ; テーブル1::姓 )
とすればいいでしょう。

Offline

#4 2023-07-14 18:00:16

Marty
Member

Re: 部分一致レコードをポータルに表示する方法

今のところポータル表示だけで構いません。

しかし、以前ポータルのフィルタ機能を使った際に
かなり動きが悪くなった事があり少し不安です。
レコード数が多かったり、非保存のフィールドがあったせいかもしれませんが・・・

フィルタをかけるときに注意することはありますか?

Offline

#5 2023-07-15 07:21:31

himadanee
Guest

Re: 部分一致レコードをポータルに表示する方法

フィルタだと、テーブル2の全レコードで毎回その計算をすることになるので、レコード数が多ければそれなりに時間がかかります。

私が書いたSQLのも、計算結果保存だとテーブル2で変更があった場合に対応できないので、非保存にするか、テーブル1のレコード(厳密にはそのポータル)を表示するときに再計算する必要があります。(非保存なのはテーブル1の方なので、2のレコード数は無関係)
しかし、WHEREの検索に索引が使えないので、結局テーブル2のレコード数にも依存しそう。
日本語の検索は自動的に部分一致(山田の検索で小山田もヒットする)になって、それなりの速度は出てたような気がしますが。

#6 2023-07-24 17:05:53

Marty
Member

Re: 部分一致レコードをポータルに表示する方法

ありがとうございました。

期待通りの動きは出来たので、また重くなるようだったら
根本からやり方を変えてみたいと思います。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 551.77 KiB (Peak: 579.57 KiB) ]