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

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

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

You are not logged in.

Announcement

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


#1 2019-07-31 19:22:25

kirari
Member

検索キーワードを入れてもレコードが抽出されない

https://fm-aid.com/bbs2/viewtopic.php?i … せていただきました。
それぞれのファイルデータを見ることはできたのですが、以前アドバイスいただいたスクリプトを参考に下記の検索スクリプトで検索をしたのですが、レコードの検索ができず困っています。
状況はキーワードを入れてもレコードが抽出されない状況です。アドバイスいただけないでしょうか。(ファイルメーカー18使用)

検索スクリプト
>>>>
ウインドウの固定
レコード/検索条件確定[ダイアログあり:オフ]
変数を設定[$キーワード;値:検索フィールド名]
If[IsEmpty($キーワード)]
   現在のスクリプト終了[テキスト結果:False]
End If
検索モードに切り替え[一時停止:オフ]
フィールド設定[レコード番号フィールド&検索内容フィールド;$キーワード ]
エラー処理[オン]
検索実行[  ]
If[Get(最終エラー)=401]
  カスタムダイアログを表示["エラー";”キーワードを含むレコードはありませんでした”]
End If
エラー処理[オフ]
現在のスクリプト終了[ テキスト結果:False ]

>>>>>>
トリガはOnObjectExitを設定しています。

Offline

#2 2019-07-31 20:27:13

Shin
Member

Re: 検索キーワードを入れてもレコードが抽出されない

レコード番号フィールド&検索内容フィールド というフィールドの構造が問題でしょうね。

Offline

#3 2019-07-31 20:47:35

koeda
Member

Re: 検索キーワードを入れてもレコードが抽出されない

kirariさん、デバッガをお使いではないですよね?
スクリプト作成に慣れてきたと思うので、次はぜひデバッガとデータビューワの使い方を練習してください。
決して難しいものではありませんし、スクリプト作成の効率が格段に上がります。

デバッガを使ってスクリプトの動作を追跡できれば、ただ「動かない」ではなく、
この行でエラーコードXXXが出ているとか、値が入っているはずの変数が空っぽだとか、
問題の箇所が発見しやすくなります。

正直なところ、スクリプトだけを拝見しても、テーブル、フィールド、リレーションなどの
定義がわからないので、あてずっぽうに近いアドバイスしかできず、効率が悪いです。

(質問)
●3行目:「検索フィールド名」というのは検索キーワードが格納されるフィールドですか?
●8行目:「レコード番号フィールド&検索内容フィールド」とは?(ここが謎)2つのフィールドを結合する計算フィールドですか?
●9行目:エラー処理[オン]をオフにしたら、どのようなメッセージが出ますか?
●検索できないとのことですが、「キーワードを含むレコードはありませんでした」というダイアログは出ているのですか?

Last edited by koeda (2019-07-31 21:09:18)

Offline

#4 2019-07-31 21:58:38

kirari
Member

Re: 検索キーワードを入れてもレコードが抽出されない

すみません。みなさん、アドバイスありがとうございます。

>3行目:「検索フィールド名」というのは検索キーワードが格納されるフィールドですか?
検索フィールド名というのは検索キーワードが格納されるフィールドです。

>8行目:「レコード番号フィールド&検索内容フィールド」とは?(ここが謎)2つのフィールドを結合する計算フィールドですか?
>レコード番号フィールド&検索内容フィールド というフィールドの構造が問題でしょうね。

エクセルデータは5000件あり、それぞれのデータは1行ごとにデータの違いがあるので、番号を1,2,3と1行ごとに付与させて、ファイルメーカーの1つのファイルの1テーブルに取り込みました。
その1テーブルでは、プルダウンで、たとえば1を選択すると、テーブルに1のデータが、2を選択すると、テーブルに2……のデータが出るようにしました。
1のデータが出たままで、1のデータに関連するキーワードを探したいのですが、キーワードをいれると全データ5000件の関連するキーワードを検索してしまいます。
スクリプトをみたところ、スクリプトの8行目が
フィールド設定[検索内容フィールド名;$キーワード ]なので
レコード番号フィールドを設定していたので(エクセルに付与させた番号1,2,3)を検索内容フィールドと一緒に結合させておけば、全データを表示しないのではないかと考えて「&」を書きました。
>OnObjectExitトリガは、どのフィールドオブジェクトに設定されていますか?「検索フィールド名」?
検索フィールドに設定しています。

検索バーに問題があると考え、その検索バーにデバッカをいれたところ、
[20]コマンドまたは操作がスクリプトトリガによってキャンセルしました、と言われました。

Offline

#5 2019-07-31 22:12:35

Moz
Member

Re: 検索キーワードを入れてもレコードが抽出されない

いい加減にしつこいようですが基礎を学んでから開発に挑戦しては如何でしょう。

基礎を理解しなくてはといいつつ次々と手を出すのには理由があるのですか?
業務命令で納期がタイトだとしても基礎を学ぶほうが早いでしょう。

1のデータが出たままで、1のデータに関連するキーワードを探したいのですが、キーワードをいれると全データ5000件の関連するキーワードを検索してしまいます。

"検索してしまいます" ではなく、それが仕様です。
FileMaker に限らず検索のデフォルトは置換(現在の検索結果を破棄して新たな検索結果を表示)です。

レコード番号フィールドを設定していたので(エクセルに付与させた番号1,2,3)を検索内容フィールドと一緒に結合させておけば、全データを表示しないのではないかと考えて「&」を書きました。

基礎が分かっていればこのような頓珍漢なことをすることはありません。

それぞれのデータは1行ごとにデータの違いがあるので、番号を1,2,3と1行ごとに付与させて、

1行毎にデータの違いというのは何を示しますか?

例えば各行の情報は「人」「製品」などの同じ項目に属する情報の集まりなのか、
1行毎に「人」「製品」と異なる項目に属する情報の集まりなのか......
後者だとしたらエクセルデータの構造にも FileMaker 側での構造にも問題があります。

検索バーに問題があると考え、その検索バーにデバッカをいれたところ、

「検索バー」とは何でしょう?検索バーにデバッガを入れるとは何を指しますか?

番号1〜3を検索してその中からキーワードに合致するレコードを検索するという手順だけなら
[フィールド設定]で「番号」と「検索内容フィールド」それぞれに数字とキーワードを設定するように
2つの[フィールド設定]スクリプトステップを利用すれば済みます。

既に検索をした後で表示されているレコードからキーワードを含むレコードを検索したいのならば
[検索実行]ではなく[対象レコードの絞り込み]を利用すれば良いでしょう。

兎にも角にも先走らずに基礎を学ぶことを強く強く推奨します。

Offline

#6 2019-08-01 09:51:58

koeda
Member

Re: 検索キーワードを入れてもレコードが抽出されない

検索バーに問題があると考え、その検索バーにデバッカをいれたところ、
[20]コマンドまたは操作がスクリプトトリガによってキャンセルしました、と言われました。

ということは、401エラー(=正常に検索したけどヒットは0件だった)が出ていないので、
別のエラーが発生しているでしょうね。

サンプルスクリプトの通りエラー表示[オン]をそのまま書いておくと、エラーが発生した時のメッセージが
出なくなります。サンプルは完成品ですから、不要なメッセージを出さないよう[オン]で良いのですが、
開発中は[オフ]にしておくことで手掛かりが得られることもありますよ。

以下は、すでにMozさんが書かれたことの繰り返しになりますが…

スクリプトは、繰り返し行われる定型的な一連の操作手順を記述して、効率的に自動実行するのが目的です。
ですからスクリプトを書く際には、自分が目的の操作を行うならどういう手順になるかをまず自己観察
してください。

今回のケースであれば、以下のような操作が一例として考えられます。
1;レイアウトを検索モードに切り替える
2:種別欄に1, 2, 3...のいずれかをタイプ入力 or マウスで選択する
3:検索対象のフィールドにキーワードをタイプ入力する
4:リターンキーを押して、検索実行する
2と3で指定した検索条件でAND検索ができますから、種別とキーワードで絞り込みしたいという今回の目的は
達せられるはずです。

次に、この操作ステップをスクリプトへ移していけば良いのです。
4行のスクリプトになりますね。
その際、2と3の検索条件はどこからか取得しなければなりませんから、そのためのグローバルフィールドを
追加定義すれば良いでしょう。

このように、スクリプトの開発に先立ち、FileMakerの基本的な操作方法を理解していることは必須です。
失礼ですがkiraraさんのご質問を読むと、そうした基本操作についてまだ覚束ないところがありそうです。
アプリケーション開発者は、作るだけでなく、社内ユーザーを教育する場面もあるでしょうから、
そういう意味でもFileMakerを基本から勉強しておくことが不可欠でしょう。

複数の条件を使ってAND検索したいときには?あるいはOR検索したいときには?
一度検索した結果をさらに別の条件で絞り込みたいときには?
検索結果を破棄して再び全件を表示するには?
まずそういう基本的な操作を一通りこなせるようになりましょう。

もちろん、そうしたイロハが身につくまでスクリプトに触るな、とは言いません。
ただ、うまく行かないときに、スクリプトで実現したい機能を手動で行うとしたらどういう操作に
なるのか、というところまで立ち戻って考えてみることも大切と思います。

Last edited by koeda (2019-08-01 09:53:11)

Offline

#7 2019-08-01 09:59:35

kirari
Member

Re: 検索キーワードを入れてもレコードが抽出されない

ただただお詫びするばかりです。
業務命令の指示と自分の勉強の速度が追いついておらず
このようなことになっております。本当に申し訳ございません。

Offline

#8 2019-08-01 10:20:03

Shin
Member

Re: 検索キーワードを入れてもレコードが抽出されない

その運用を行うのでしたら、前回のインポートさせる構造は不適切です。3回のインポートで、3テーブルに分けてインポートするべきでしょう。

この検索の件も、検索そのものを全く理解していない、という質問ですので、逆にこちらが戸惑いますね。

全体に何をしたいかをまず書かれたらいかがですか。
結構大きな業務システムを作ろうとしているのだと思いますが、今の貴方にはおそらく無理です。設計の方針と、全体の構築(基本構造)ができていないのに、その上dに上家を組み立てても、ある程度の大きさになると基礎から崩れますよ。作ったのちには、それのメンテナンスが必要だということを、今のうちに認識しておいたほうがいいです。業務としては、こちらの方が数倍手間と知識や習熟が必要です。特に運用初期のメンテナンスは、基礎がしっかり組み立てられていないと、泣きそうになります。たまに、基礎から作り直すハメもあります。

また、https://fm-aid.com/bbs2/viewtopic.php?id=9433 で公開されていた参考図も非公開にされていますね。このような掲示板で一旦公開したファイルは、数年後にそのスレッドの参照する方のために半永久的に公開しておくべきです。それがお分かりになっていないのでしたら、マナー違反だと思います。

Last edited by Shin (2019-08-01 10:43:07)

Offline

#9 2019-08-01 15:26:55

koeda
Member

Re: 検索キーワードを入れてもレコードが抽出されない

kirari wrote:

ただただお詫びするばかりです。
業務命令の指示と自分の勉強の速度が追いついておらず
このようなことになっております。本当に申し訳ございません。

かなり厳しいというか、無理な業務命令ですよねー。
とはいえ、無理に無理を重ねても実用的なものはできませんから、あまり焦らずに進んでください。
厳しめの意見もありますが、決してkirariさんを責めているわけではありません。
業務に貢献できるようなシステムをFileMakerで作れるようになっていただきたいけれど、
kirariさんがこのまま進んでも間違いなく息切れするので、急がば回れで行きましょう、ということです。

まずは今回のExcelのような単純なリストを共有できるレイアウトを作成し、
データの検索やソートについてはFileMakerの標準機能を利用するだけでも十分なのでは?
と思います。
データの共有環境を構築し、社内ユーザがFileMakerの初歩的な操作を覚えると共に、
ユーザー管理やバックアップを含めた運用体制を作るところまでが第一歩です。
(ということは、本当はkiraraさんの上司に言いたいんですけどね)

その次に、見積書とか注文書のように1文書の中に複数明細を含む構造を含み、顧客マスタや商品マスタ
など他のテーブルとの関連を持つものを共有しようと思った時に、リレーションシップの考え方が重要に
なります。
リレーションシップに慣れてくれば、このテーブルは3つに分割した方が効率よく管理できるな、
では新たなテーブルへ分割移行しよう、これは分割しない方が良いな、という判断もできるようになるでしょう。

レイアウト上に専用の検索機能を作るといった「便利機能」を作るのは、ここまで進んで初めて
考えるべきことです。それが一日も早く必要だ、ということであれば今すぐ専門家を呼ぶべきですし、
費用の観点から内製化するということであれば時間がかかるのは仕方ありませんね。
(ということは、本当はkirariさんの上司に言いたいんですけどね)

ぶっちゃけ、「素人なんだからすぐには出来ないんだよ、ちょっと待ちやがれ」ぐらいの気持ちで行きましょう。
開発に練習や慣れは必要ですよ〜。最初からスイスイできる人はいません。

Last edited by koeda (2019-08-01 15:37:32)

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 602.4 KiB (Peak: 619.3 KiB) ]