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

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

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

You are not logged in.

Announcement

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


#1 2016-07-08 15:31:48

梅雨
Guest

未登録の場合は新規レコード作成

バージョン12を使用しています。

この様なスクリプトを使っています。
新たに入力レイアウトの計画番号が未登録の場合は新規レコード作成させたいのですが方法がわからず困っています。

変数を設定[$no;計画NO]
レイアウト切り替え[入力]
検索モードに切り替え
フィールド設定[入力::計画番号;$no]
レコード/検索条件確定
エラー処理[オン]
検索実行
エラー処理[オフ]
IF[Get(対象レコード数)>0
  カスタムダイアログを表示[登録済みなので表示します]
End If

#2 2016-07-08 16:47:01

Shin
Member

Re: 未登録の場合は新規レコード作成

構造がよくわかりませんが、
計画NOを計画番号とリレーションしておきます。
そのリレーション先で IsValis() などで判別すると、その番号が存在しているかどうか判断できますので、この方が簡単でしょう。
レコードの作成は、リレーション先の計画番号に番号を設定すれだけですし、そのレコードへの移動も県連レコードへ移動、を行うだけです。

Offline

#3 2016-07-09 09:27:24

旅人
Member

Re: 未登録の場合は新規レコード作成

未登録かどうかを判定する計画番号はどうやって
どこに入力するのでしょう?グローバルフィールド?

Offline

#4 2016-07-11 10:13:49

梅雨
Guest

Re: 未登録の場合は新規レコード作成

旅人 wrote:

未登録かどうかを判定する計画番号はどうやって
どこに入力するのでしょう?グローバルフィールド?

二つのテーブルがあります。
「変数を設定[$no;計画NO]」はテーブルAで、「フィールド設定[入力::計画番号;$no]」はテーブルBです。
計画番号はグローバルフィールドではなく、テーブルBで入力に利用しているフィールドです。

出来ればこのスクリプトを修正する方法がよいのですが。
宜しくお願い致します。

#5 2016-07-11 11:19:22

Shin
Member

Re: 未登録の場合は新規レコード作成

今のスクリプトを改良したいのならば、最後の部分を

If [Get ( 対象レコード数 ) > 0 )
  カスタムダイアログを表示[登録済みなので表示します]
else
 新規レコード
 フィールド設定[テーブルB::計画番号;$no]
end If

と変更すれば良いでしょう。
ただ、私が作るならば、テーブルA::計画NOとテーブルB::計画番号 リレーションを張っておき

関連レコードへ移動[テーブルB]
If [Get ( 最終エラー )]
 フィールド設定[テーブルB::計画番号;テーブルA::計画NO]
else
  カスタムダイアログを表示[登録済みなので表示します]
end If

という6行のスクリプトにしてしまいます。FMのリレーションの特性を利用した方法で、非常に簡便で応用が利く物ですので、習得される事を強くお勧めします。

Last edited by Shin (2016-07-11 11:20:06)

Offline

#6 2016-07-11 14:31:39

梅雨
Guest

Re: 未登録の場合は新規レコード作成

Shin wrote:

今のスクリプトを改良したいのならば、最後の部分を

If [Get ( 対象レコード数 ) > 0 )
  カスタムダイアログを表示[登録済みなので表示します]
else
 新規レコード
 フィールド設定[テーブルB::計画番号;$no]
end If

と変更すれば良いでしょう。
ただ、私が作るならば、テーブルA::計画NOとテーブルB::計画番号 リレーションを張っておき

関連レコードへ移動[テーブルB]
If [Get ( 最終エラー )]
 フィールド設定[テーブルB::計画番号;テーブルA::計画NO]
else
  カスタムダイアログを表示[登録済みなので表示します]
end If

という6行のスクリプトにしてしまいます。FMのリレーションの特性を利用した方法で、非常に簡便で応用が利く物ですので、習得される事を強くお勧めします。

有難うございます。
最後の部分を修正すると、登録済み表示も新規レコードもできました。
変数を設定[$no;計画NO]
レイアウト切り替え[入力]
検索モードに切り替え
フィールド設定[入力::計画番号;$no]
レコード/検索条件確定
エラー処理[オン]
検索実行
エラー処理[オフ]
IF[Get(対象レコード数)>0
  カスタムダイアログを表示[登録済みなので表示します]
Else
新規レコード/検索条件
End If

関連レコードへ移動し登録済み表示もできましたが、計画番号=計画NOがなければ新規レコード作成するのはどの様にすればよいのでしょうか。
何度も申し訳ありません。

#7 2016-07-11 16:13:19

Shin
Member

Re: 未登録の場合は新規レコード作成

リレーションの設定で、リレーションを通した関連レコードの作成 を許可しておきます。その状態で、
フィールド設定[テーブルB::計画番号;テーブルA::計画NO]
のステップで、計画番号の設定された新規レコードが作成されます。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.014 seconds, 7 queries executed - Memory usage: 517.13 KiB (Peak: 521.66 KiB) ]