みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
バージョン12を使用しています。
この様なスクリプトを使っています。
新たに入力レイアウトの計画番号が未登録の場合は新規レコード作成させたいのですが方法がわからず困っています。
変数を設定[$no;計画NO]
レイアウト切り替え[入力]
検索モードに切り替え
フィールド設定[入力::計画番号;$no]
レコード/検索条件確定
エラー処理[オン]
検索実行
エラー処理[オフ]
IF[Get(対象レコード数)>0
カスタムダイアログを表示[登録済みなので表示します]
End If
構造がよくわかりませんが、
計画NOを計画番号とリレーションしておきます。
そのリレーション先で IsValis() などで判別すると、その番号が存在しているかどうか判断できますので、この方が簡単でしょう。
レコードの作成は、リレーション先の計画番号に番号を設定すれだけですし、そのレコードへの移動も県連レコードへ移動、を行うだけです。
Offline
未登録かどうかを判定する計画番号はどうやって
どこに入力するのでしょう?グローバルフィールド?
Offline
未登録かどうかを判定する計画番号はどうやって
どこに入力するのでしょう?グローバルフィールド?
二つのテーブルがあります。
「変数を設定[$no;計画NO]」はテーブルAで、「フィールド設定[入力::計画番号;$no]」はテーブルBです。
計画番号はグローバルフィールドではなく、テーブルBで入力に利用しているフィールドです。
出来ればこのスクリプトを修正する方法がよいのですが。
宜しくお願い致します。
今のスクリプトを改良したいのならば、最後の部分を
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
今のスクリプトを改良したいのならば、最後の部分を
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がなければ新規レコード作成するのはどの様にすればよいのでしょうか。
何度も申し訳ありません。
リレーションの設定で、リレーションを通した関連レコードの作成 を許可しておきます。その状態で、
フィールド設定[テーブルB::計画番号;テーブルA::計画NO]
のステップで、計画番号の設定された新規レコードが作成されます。
Offline
Pages: 1
[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 516.42 KiB (Peak: 520.96 KiB) ]