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

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

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

You are not logged in.

Announcement

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


#1 2020-08-26 11:16:47

みゅう
Guest

初心者です。

初歩的なことですみません。
教えてくださいm(_ _)m
スクリプトを組んでいて壁にぶち当たりました。

大まかですが、下記のような内容です。


レイアウト:売上管理で
検索:「営業部」

変数設定(主キー)

レイアウト:売上明細で
「新規レコード作成」

「フィールド設定」主キー

「フィールド設定」手当フィールド
「営業手当」を設定。

営業部の人にだけ
売上明細で新しいレコードができ「営業手当」が追加されます。


このファイルは、3事業所分、別々に存在します。
(ファイルが3つあるという意味です)

営業部の人がいない事業所の場合、
売上明細に、主キー欄が空白の新規レコード「営業手当」が追加されます。

この無駄なレコードが出来ないようにするにはどうすれば良いでしょうか。
本当に分かりづらい説明ですみません。

#2 2020-08-27 13:14:42

むむむ
Guest

Re: 初心者です。

主キーが得意先コードなのか営業者コードなのか何のコードか質問内容からわかりませんが
おそらく営業者コードですかな?

営業部の人がいない事業所の場合でも「売上明細」自体は作成するんですかね?
営業部の人がいないなら売上明細を作成しないなら、最初の検索時にエラー処理をしてあげては?

レコード作成自体を主キーのあるなしでわけたいなら
If ( IsEmpty (主キー)≠ 1)
変数設定(主キー)
レコード作成・・・
Else・・・

で分岐すればいいのでは?

#3 2020-08-27 20:08:39

みゅう
Guest

Re: 初心者です。

むむむさん、お返事ありがとうございます‼︎
ちなみに営業の人がいない事業所では、明細は必要ありません。

おっしゃる通りです!
主キーのある無しで分けたいのです。

If ( IsEmpty (主キー)≠ 1) ← ≠ 1はどういう意味でしょうか?
変数設定(主キー)
レコード作成・・・
Else・・・←空でなければ、何もしない場合は、どのように書けばよろしいですか?

何度もすみませんm(_ _)m
よろしくお願いいたします。

#4 2020-08-27 20:33:29

みゅう
Guest

Re: 初心者です。

補足です。

私の説明が悪かったので、もう一度ご説明しますと、

検索して営業がいる場合は、
新規レコード作成して、フィールド設定をする。

検索結果がない場合は、新規レコードを作らない。
ということをしたいのです。

現在は、営業さんがいない事業所でも
何故か新規レコードが1つだけ作成されてしまってます。

#5 2020-08-28 10:13:08

むむむ
Guest

Re: 初心者です。

みゅう wrote:

現在は、営業さんがいない事業所でも
何故か新規レコードが1つだけ作成されてしまってます。

何故かではなく当然の動きをしてくれてるだけですよ。
現状では検索結果に関係なく「新規レコード作成」は実行されるので。

最初の「営業部」で検索をした段階で
検索条件に一致するレコードがないときで分岐したいなら
「エラー処理」を入れて下さい。

エラー処理 [オン]
検索実行
If [Get(最終エラー) = 401] 
○○○○○○
End If
変数設定(主キー)・・・

エラーコードの401は「検索条件に一致するレコードがありません」です。

↓まずはここを読んでみてください。
https://fmhelp.filemaker.com/help/16/fm … pture.html

○○○○○○には検索条件に一致するレコードがなかった場合の処理を入れます。
ただ、「なにもしない」というのはこちらでは判断し難いです。
そこに至るまでの動きがわからないので。
「全スクリプト終了」でいいのではないかと思いますが、
「レイアウト切り替え」や「カスタムダイアログ」などの動きを入れてあげたほうが良いケースもあります。

「IsEmpty」は
「フィールドが空欄の場合、関連フィールド、関連テーブル、リレーションシップ、またはファイルが見つからない場合、あるいは他のエラーが生じた場合は真(1)を返します。 それ以外の場合は偽(0)を返します。」
という関数なので、主キーが空白の場合は「1」になりますから、「≠ 1」は空白じゃない場合という意味になります。

#6 2020-08-29 13:25:17

みゅう
Guest

Re: 初心者です。

むむむ様、お返事ありがとうございます!

検索結果がなければ、なにもせずに
次の処理続を行したいのですが、
どう書けば良いか分かりません。
難しいです(T . T)

営業部を検索して対象がいれば処理(新規レコード作成)
いなければ次の処理に。

人事部を検索して処理。(新規レコード作成)
いなければ次の処理に。

総務部を検索して処理。(新規レコード作成)
いなければ次の処理に。

同様な内容が続きます。


検索してない場合に、次の処理に行かせる方法を教えてください。
よろしくお願いいたします。

#7 2020-08-29 18:25:48

むむむ
Guest

Re: 初心者です。

ちょっと危険な香りがプンプンしますね・・・。
このままいくともっとでっかい壁にぶち当たる気がします。

検索結果が1レコードしかない場合はともかく、
複数レコードあった場合とか大丈夫ですか?

そもそもの構造もよくわかりませんし・・・。

みゅう wrote:

レイアウト:売上管理で
検索:「営業部」

変数設定(主キー)

レイアウト:売上明細で
「新規レコード作成」

「フィールド設定」主キー

「フィールド設定」手当フィールド
「営業手当」を設定。

営業部の人にだけ
売上明細で新しいレコードができ「営業手当」が追加されます。

レイアウト:売上管理
レイアウト:売上明細
は別テーブルですよね?

今まで別で管理していた営業手当をファイルメーカー内で処理したいということなら、
売上管理のレコード作成時に売上明細テーブルにもレコードを追加していくか
売上管理テーブルの営業手当フィールドに値をいれるようにしたほうが
近道な気がしますけど・・・。


みゅう wrote:

主キーのある無しで分けたいのです。

なら、最初からそれぞれ部署検索する意味がわかりません。
最初から主キーで検索すればいいのでは?


↓「IF」の説明です。頻繁に使用しますので必ず一度読んで下さい。
https://fmhelp.filemaker.com/help/16/fm … -step.html

とりあえず、お持ちの知識ではメインファイルをいきなり触るのは危険です。
バックアップをとって、必ずテスト環境で行って下さいね。

#8 2020-08-29 21:26:51

みゅう
Guest

Re: 初心者です。

むむむ様

度々なアドバイスありがとうございます‼︎

ご教示頂いたリンク先を読んでようやく気付きました。
ややこしく考えすぎていました。



『検索結果があれば下記の処理を行い、
検索結果が何もなければ何もしない。』

は、下記のみで良いということですよね(^^;;

検索実行 [記憶する]
If [Get (対象レコード数) >1]
    新規レコード作成
   フィールド設定
End If

#9 2020-08-31 09:55:35

むむむ
Guest

Re: 初心者です。

捉え方としては正解ですが、
結果としては不正解です。


みゅう wrote:

検索実行 [記憶する]
If [Get (対象レコード数) >1]
    新規レコード作成
   フィールド設定
End If


この場合、対象レコード数が2個~何十個とあったとしても、
対象レコードが2個以上あるなら、
ひとつの「新規レコード」を作成するということです。

みゅう wrote:

『検索結果があれば下記の処理を行い、
検索結果が何もなければ何もしない。』

なら、
If [Get (対象レコード数) >0]
でないと1はカウントしませんよ。

#10 2020-08-31 10:55:13

チポ
Member

Re: 初心者です。

横から・・

「主キー」
の説明がありませんが、、

営業部で検索した対象レコードの主キーは全て同じなのでしょうか?

異なるとすれば
> 検索:「営業部」
> ↓
> 変数設定(主キー)
> ↓

これは対象レコードの一番最初のレコードの値を取りますが、、

Offline

#11 2020-08-31 11:34:00

むむむ
Guest

Re: 初心者です。

>チポさま

そうなんですよね・・・。
「主キー」以外で検索して、「主キー」のあるなしで判断するなら、
結果が複数あるケースが考えられるのと思うのですが・・・。

むむむ wrote:

検索結果が1レコードしかない場合はともかく、
複数レコードあった場合とか大丈夫ですか?

についてレスもないんで・・・。

IFで躓くなら、LOOPはパニックかな・・・。

#12 2020-08-31 17:46:17

みゅう
Guest

Re: 初心者です。

むむむ様

むむむ様に教えて頂いた通り、

If [Get (対象レコード数) >0]
を検索実行の後に入れたら、

無駄なレコードが出来なくなりました!!

何度も何度も、初歩的な意味の分かりづらい
つたない質問に親身になって下さり
本当に感謝しかありませんm(_ _)m

本当にありがとうございました‼︎‼︎

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 550.25 KiB (Peak: 571.16 KiB) ]