みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
初歩的なことですみません。
教えてくださいm(_ _)m
スクリプトを組んでいて壁にぶち当たりました。
大まかですが、下記のような内容です。
レイアウト:売上管理で
検索:「営業部」
↓
変数設定(主キー)
↓
レイアウト:売上明細で
「新規レコード作成」
↓
「フィールド設定」主キー
↓
「フィールド設定」手当フィールド
「営業手当」を設定。
営業部の人にだけ
売上明細で新しいレコードができ「営業手当」が追加されます。
このファイルは、3事業所分、別々に存在します。
(ファイルが3つあるという意味です)
営業部の人がいない事業所の場合、
売上明細に、主キー欄が空白の新規レコード「営業手当」が追加されます。
この無駄なレコードが出来ないようにするにはどうすれば良いでしょうか。
本当に分かりづらい説明ですみません。
主キーが得意先コードなのか営業者コードなのか何のコードか質問内容からわかりませんが
おそらく営業者コードですかな?
営業部の人がいない事業所の場合でも「売上明細」自体は作成するんですかね?
営業部の人がいないなら売上明細を作成しないなら、最初の検索時にエラー処理をしてあげては?
レコード作成自体を主キーのあるなしでわけたいなら
If ( IsEmpty (主キー)≠ 1)
変数設定(主キー)
レコード作成・・・
Else・・・
で分岐すればいいのでは?
むむむさん、お返事ありがとうございます‼︎
ちなみに営業の人がいない事業所では、明細は必要ありません。
おっしゃる通りです!
主キーのある無しで分けたいのです。
If ( IsEmpty (主キー)≠ 1) ← ≠ 1はどういう意味でしょうか?
変数設定(主キー)
レコード作成・・・
Else・・・←空でなければ、何もしない場合は、どのように書けばよろしいですか?
何度もすみませんm(_ _)m
よろしくお願いいたします。
補足です。
私の説明が悪かったので、もう一度ご説明しますと、
検索して営業がいる場合は、
新規レコード作成して、フィールド設定をする。
検索結果がない場合は、新規レコードを作らない。
ということをしたいのです。
現在は、営業さんがいない事業所でも
何故か新規レコードが1つだけ作成されてしまってます。
現在は、営業さんがいない事業所でも
何故か新規レコードが1つだけ作成されてしまってます。
何故かではなく当然の動きをしてくれてるだけですよ。
現状では検索結果に関係なく「新規レコード作成」は実行されるので。
最初の「営業部」で検索をした段階で
検索条件に一致するレコードがないときで分岐したいなら
「エラー処理」を入れて下さい。
エラー処理 [オン]
検索実行
If [Get(最終エラー) = 401]
○○○○○○
End If
変数設定(主キー)・・・
エラーコードの401は「検索条件に一致するレコードがありません」です。
↓まずはここを読んでみてください。
https://fmhelp.filemaker.com/help/16/fm … pture.html
○○○○○○には検索条件に一致するレコードがなかった場合の処理を入れます。
ただ、「なにもしない」というのはこちらでは判断し難いです。
そこに至るまでの動きがわからないので。
「全スクリプト終了」でいいのではないかと思いますが、
「レイアウト切り替え」や「カスタムダイアログ」などの動きを入れてあげたほうが良いケースもあります。
「IsEmpty」は
「フィールドが空欄の場合、関連フィールド、関連テーブル、リレーションシップ、またはファイルが見つからない場合、あるいは他のエラーが生じた場合は真(1)を返します。 それ以外の場合は偽(0)を返します。」
という関数なので、主キーが空白の場合は「1」になりますから、「≠ 1」は空白じゃない場合という意味になります。
むむむ様、お返事ありがとうございます!
検索結果がなければ、なにもせずに
次の処理続を行したいのですが、
どう書けば良いか分かりません。
難しいです(T . T)
営業部を検索して対象がいれば処理(新規レコード作成)
いなければ次の処理に。
↓
人事部を検索して処理。(新規レコード作成)
いなければ次の処理に。
↓
総務部を検索して処理。(新規レコード作成)
いなければ次の処理に。
↓
同様な内容が続きます。
検索してない場合に、次の処理に行かせる方法を教えてください。
よろしくお願いいたします。
ちょっと危険な香りがプンプンしますね・・・。
このままいくともっとでっかい壁にぶち当たる気がします。
検索結果が1レコードしかない場合はともかく、
複数レコードあった場合とか大丈夫ですか?
そもそもの構造もよくわかりませんし・・・。
レイアウト:売上管理で
検索:「営業部」
↓
変数設定(主キー)
↓
レイアウト:売上明細で
「新規レコード作成」
↓
「フィールド設定」主キー
↓
「フィールド設定」手当フィールド
「営業手当」を設定。営業部の人にだけ
売上明細で新しいレコードができ「営業手当」が追加されます。
レイアウト:売上管理
レイアウト:売上明細
は別テーブルですよね?
今まで別で管理していた営業手当をファイルメーカー内で処理したいということなら、
売上管理のレコード作成時に売上明細テーブルにもレコードを追加していくか
売上管理テーブルの営業手当フィールドに値をいれるようにしたほうが
近道な気がしますけど・・・。
主キーのある無しで分けたいのです。
なら、最初からそれぞれ部署検索する意味がわかりません。
最初から主キーで検索すればいいのでは?
↓「IF」の説明です。頻繁に使用しますので必ず一度読んで下さい。
https://fmhelp.filemaker.com/help/16/fm … -step.html
とりあえず、お持ちの知識ではメインファイルをいきなり触るのは危険です。
バックアップをとって、必ずテスト環境で行って下さいね。
むむむ様
度々なアドバイスありがとうございます‼︎
ご教示頂いたリンク先を読んでようやく気付きました。
ややこしく考えすぎていました。
『検索結果があれば下記の処理を行い、
検索結果が何もなければ何もしない。』
は、下記のみで良いということですよね(^^;;
検索実行 [記憶する]
If [Get (対象レコード数) >1]
新規レコード作成
フィールド設定
End If
捉え方としては正解ですが、
結果としては不正解です。
検索実行 [記憶する]
If [Get (対象レコード数) >1]
新規レコード作成
フィールド設定
End If
この場合、対象レコード数が2個~何十個とあったとしても、
対象レコードが2個以上あるなら、
ひとつの「新規レコード」を作成するということです。
『検索結果があれば下記の処理を行い、
検索結果が何もなければ何もしない。』
なら、
If [Get (対象レコード数) >0]
でないと1はカウントしませんよ。
横から・・
「主キー」
の説明がありませんが、、
営業部で検索した対象レコードの主キーは全て同じなのでしょうか?
異なるとすれば
> 検索:「営業部」
> ↓
> 変数設定(主キー)
> ↓
これは対象レコードの一番最初のレコードの値を取りますが、、
Offline
>チポさま
そうなんですよね・・・。
「主キー」以外で検索して、「主キー」のあるなしで判断するなら、
結果が複数あるケースが考えられるのと思うのですが・・・。
検索結果が1レコードしかない場合はともかく、
複数レコードあった場合とか大丈夫ですか?
についてレスもないんで・・・。
IFで躓くなら、LOOPはパニックかな・・・。
むむむ様
むむむ様に教えて頂いた通り、
If [Get (対象レコード数) >0]
を検索実行の後に入れたら、
無駄なレコードが出来なくなりました!!
何度も何度も、初歩的な意味の分かりづらい
つたない質問に親身になって下さり
本当に感謝しかありませんm(_ _)m
本当にありがとうございました‼︎‼︎
Pages: 1
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 550.25 KiB (Peak: 571.16 KiB) ]