みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
よろしくおねがいします。
FileMaker19です。
レイアウト名をみて分岐したいのですが、うまくいきません。
Case ( PatternCount ( Get ( レイアウト名 ); "検索" ); A; B )
レイアウト名に間違いなく検索が含まれているのですが、どうしてもBになってしまいます。
このような使い方はできないのでしょうか。
Offline
AとBはフィールド名なんですか?
最終的にはif文で使いたいです。
if
PatternCount ( Get ( レイアウト名 ); "検索" )
これがなぜか0になってしまいます。
Offline
Ifの中なら、0というよりFalseですよね。
実行したいものがスキップされるということになりますが、処理は何ですか?
Elseはあるんですか?
同じTA/別のレイアウトで同じスクリプト(レイアウト切り替え)を実行します。
実行するレイアウトによって切り替える先が変わるので、その分岐を行いたいのです。
◯スクリプトを行うレイアウト名と切り替え後のレイアウト名
日報レイアウト→日報ウインドウ
日報レイアウト検索→日報ウインドウ検索
If [PatternCount ( Get ( レイアウト名 ); "検索" )]
レイアウト切り替え [日報ウインドウ検索]
Else
レイアウト切り替え [日報ウインドウ]
End If
Offline
レイアウトへ移動で、[計算によるレイアウト名...] を使えば簡単では。
計算は、取得したレイアウト名で、文字を置換します。
Offline
ありがとうございます。
以前、[計算によるレイアウト名...] で指定していて、
後にそれを忘れてレイアウト名を変更して不具合を起こしたことがあるのです。
ですので、別の方法を模索しています。
Offline
レイアウト名の変更があるのでしたら、Get (.レイアウト名 ) も使えませんよ。レイアウト番号を使いましょう。
Offline
う~ん、Ifのとこへ来る前に既にほかのレイアウトに切り替えちゃってるとかですかねえ?
それと、ひょっとしたら、PatterCount() には不具合があるのかもしれません。
私のソリューションでも、1箇所だけ PatterCount() を使っている else If が逆の結果を返してきます。データビューワーでは正しく返しているのですが、If の中に入れると変になる...
Offline
レイアウト名をコピペして計算式を作ってみては?
PatternCount が正常に動作していないならどうしようもないですが。
再現性があれば不具合として報告できますね。
PatternCount を Position にしたらどうでしょう?
Position ( Get ( レイアウト名 ) ; "検索" ; 1 ; 1 )
Offline
回答では有りませんが、、
一つの汎用スクリプトで、他のレイアウトにも応用しているんですよね。
もう一つ同じスクリプトを作り、
「検索」用と、その他用にすれば、分岐不要になりますよね。
Offline
「一覧」の一番左に作った詳細ボタンをクリックすることで詳細のレイアウトに切り替えたいのですが、例えば、あるフィールドの値が「あ」の場合はレイアウトAへ、「い」と「う」の場合はレイアウトBへ、というようにするにはどうしたらいいのでしょうか?
分かる方、ご教授お願い致します。
その質問は「レイアウト名で分岐」とは関係ないので、新規に立てたほうがいいですが
PatternCountも必要ないので、他の場合がないとしたら
If「あるフィールド="あ"」
レイアウト切り替え「A」
Else
レイアウト切り替え「B」
End
のようにできるでしょう。
元の質問は結局解決してないんですね...
Pages: 1
[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 523.66 KiB (Peak: 528.2 KiB) ]