みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
検索開始ボタンを作っています。
ボタンを押す条件に番号が6桁であることと日付が入力済みであること。
又、未入力時はエラー表示を出すようにしたいのですが、
検索開始ボタンのスクリプトの修正方法をご指導願います。
番号グローバルはテキストでグローバル
日付グローバルは日付でグローバル
検索開始ボタンのスクリプト
検索モードに切り替え
レイアウト切り替え
フィールド設定 計画番号;番号グローバル
エラー処理 オン
検索実行
エラー処理 オフ
レコードのソート
フィールド内容の全置換 開始日;日付グローバル
> 番号が6桁であることと日付が入力済みであること
番号は、
6桁の正の整数のみという条件ですか?
また,
日付の値に条件はないのでしょうか?
Offline
> 番号が6桁であることと日付が入力済みであること
番号は、
6桁の正の整数のみという条件ですか?また,
日付の値に条件はないのでしょうか?
6桁の正の整数のみです。
日付は本日の場合は半角の 2016/09/13 で、特別な条件はありません。
宜しくお願い致します。
その条件の方法は,いろいろ有るでしょうが、
簡単と思われるのは
100000 <= 番号グローバル
and
番号グローバル <=999999
and
not Mod ( 番号グローバル ; 1 )
でいいでしょう。
日付の値に条件がないのでしたら
not IsEmpty ( 日付グローバル )
でいいですね。
この判定をスクリプトの最初にして、
真なら検索モード切り替え以降を実行
偽ならエラー表示
気になったのですが、
> エラー処理 オン
> 検索実行
> エラー処理 オフ
> レコードのソート
> フィールド内容の全置換 開始日;日付グローバル
検索結果、対象レコードがない場合もこのステップを実行しますよね。
レコードがないから特に問題はないでしょうが、
普通、対象レコードの有無を判定して、ない場合はこれをスルーさせますね。
Offline
その条件の方法は,いろいろ有るでしょうが、
簡単と思われるのは
100000 <= 番号グローバル
and
番号グローバル <=999999
and
not Mod ( 番号グローバル ; 1 )
でいいでしょう。日付の値に条件がないのでしたら
not IsEmpty ( 日付グローバル )
でいいですね。この判定をスクリプトの最初にして、
真なら検索モード切り替え以降を実行
偽ならエラー表示気になったのですが、
> エラー処理 オン
> 検索実行
> エラー処理 オフ
> レコードのソート
> フィールド内容の全置換 開始日;日付グローバル
検索結果、対象レコードがない場合もこのステップを実行しますよね。レコードがないから特に問題はないでしょうが、
普通、対象レコードの有無を判定して、ない場合はこれをスルーさせますね。
スルーさせないといけないのは フィールド内容の全置換 開始日;日付グローバル の事ですよね。
たまたまヒットしているので問題とならなかっただけです。
申し訳ありませんが、至急スルーさせるスクリプトを教えて下さい。
検索実行
If [ Get ( 対象レコード数 ) ]
ソート
全置換
//必要なら
Else
対象レコードがない場合の処理
//ここまで
End If
エラー処理 オフ
は特に必要ないでしょう。
Offline
番号が数値であるならば、テキストフィールドで扱うのは止めた方が良いでしょう。
どちらも数値フィールドならば、グローバルフィールドから、計画番号へリレーションを張って、関連レコードへ移動、を使って抽出する方法も有りますよ。
Offline
チポ様
有難うございます。
検索開始ボタンのスクリプトを修正し確認しましたので、これで良いかと思いますが。
If[100000<=番号グローバル and 番号グローバル<=999999 and not Mod(番号グローバル;1)and not IsValid(日付グローバル)]
Elsa
カスタムダイアログを表示
フィールド設定 番号グローバル ;””
フィールド設定 日付グローバル ;””
現在のスクリプト終了
End If
検索モードに切り替え
レイアウト切り替え
フィールド設定 計画番号;番号グローバル
エラー処理 オン
検索実行
If[Get(対象レコード数)]
フィールド内容の全置換 開始日;日付グローバル
Else
カスタムダイアログを表示
レイアウト切り替え
フィールド設定 番号グローバル;””
現在のスクリプト終了
End If
レコードのソート
Shin様
こちらのメリットは何なのでしょうか。
どちらも数値フィールドならば、グローバルフィールドから、計画番号へリレーションを張って、関連レコードへ移動、を使って抽出する方法も有りますよ。
> not IsValid(日付グローバル)
これでは日付フィールドが無効な値で 1(真)を返しますよ。
そもそも、
IsValid関数で空白は判定できませんね。
スクリプトは書かれたもので良さそうですが、
最初の
If
と
Else
の間に、
検索モードに切り替え
ステップ以下を全ていれるのが普通でしょうかね。
Offline
> not IsValid(日付グローバル)
これでは日付フィールドが無効な値で 1(真)を返しますよ。そもそも、
IsValid関数で空白は判定できませんね。スクリプトは書かれたもので良さそうですが、
最初の
If
と
Else
の間に、
検索モードに切り替え
ステップ以下を全ていれるのが普通でしょうかね。
IfとElseの間に移動させました。
申し訳ありませんが、not IsEmpty ( 日付グローバル )はどこにどの様に入れれば良いのでしょうか。
If[100000<=番号グローバル and 番号グローバル<=999999 and not Mod(番号グローバル;1)]
検索モードに切り替え
レイアウト切り替え
フィールド設定 計画番号;番号グローバル
エラー処理 オン
検索実行
If[Get(対象レコード数)]
フィールド内容の全置換 開始日;日付グローバル
Else
カスタムダイアログを表示
レイアウト切り替え
フィールド設定 番号グローバル;””
現在のスクリプト終了
End If
レコードのソート
Elsa
カスタムダイアログを表示
フィールド設定 番号グローバル ;””
フィールド設定 日付グローバル ;””
現在のスクリプト終了
End If
書かれたステップを丸写して変更しました。
If[100000<=番号グローバル and 番号グローバル<=999999 and not Mod(番号グローバル;1)and not IsEmpty(日付グローバル)]
検索モードに切り替え
レイアウト切り替え
フィールド設定 計画番号;番号グローバル
エラー処理 オン
検索実行
If[Get(対象レコード数)]
フィールド内容の全置換 開始日;日付グローバル
Else
カスタムダイアログを表示
レイアウト切り替え
フィールド設定 番号グローバル;””
現在のスクリプト終了
End If
レコードのソート
Elsa
カスタムダイアログを表示
フィールド設定 番号グローバル ;””
フィールド設定 日付グローバル ;””
現在のスクリプト終了
End If
これでいいでしょう。
Offline
書かれたステップを丸写して変更しました。
If[100000<=番号グローバル and 番号グローバル<=999999 and not Mod(番号グローバル;1)and not IsEmpty(日付グローバル)]
検索モードに切り替え
レイアウト切り替え
フィールド設定 計画番号;番号グローバル
エラー処理 オン
検索実行
If[Get(対象レコード数)]
フィールド内容の全置換 開始日;日付グローバル
Else
カスタムダイアログを表示
レイアウト切り替え
フィールド設定 番号グローバル;””
現在のスクリプト終了
End If
レコードのソート
Elsa
カスタムダイアログを表示
フィールド設定 番号グローバル ;””
フィールド設定 日付グローバル ;””
現在のスクリプト終了
End Ifこれでいいでしょう。
チポ様
解決しました。
大変有難うございました。
その後、殆ど同じスクリプトが必要になりましたので下記のように作成しました。
Get(スクリプト引数)=1を割り当てたボタンは正常動作しますが、Get(スクリプト引数)=2
のボタンは動作しません。
どのように修正すれは宜しいのでしょうか。
If[100000<=番号グローバル and 番号グローバル<=999999 and not Mod(番号グローバル;1)and not IsEmpty(日付グローバル)]
変数を設定[$no;番号グローバル
If[ 0]
Else If [Get(スクリプト引数)=1]
検索モードに切り替え
レイアウト切り替え A
フィールド設定 計画番号;$no
エラー処理 オン
検索実行
If[Get(対象レコード数)]
Else
カスタムダイアログを表示
レイアウト切り替え「A]
フィールド設定 番号グローバル;””
現在のスクリプト終了
End If
レコードのソート
レコード/検索条件/ページへ移動
Elsa
カスタムダイアログを表示
フィールド設定 番号グローバル ;””
フィールド設定 日付グローバル ;””
現在のスクリプト終了
End If
Else If [Get(スクリプト引数)=2]
検索モードに切り替え
レイアウト切り替え B
フィールド設定 計画番号2;$no
エラー処理 オン
検索実行
If[Get(対象レコード数)]
Else
カスタムダイアログを表示
レイアウト切り替え「B]
フィールド設定 番号グローバル;””
現在のスクリプト終了
End If
レコードのソート
レコード/検索条件/ページへ移動
Elsa
カスタムダイアログを表示
フィールド設定 番号グローバル ;””
フィールド設定 日付グローバル ;””
現在のスクリプト終了
End If
> Get(スクリプト引数)=2のボタンは動作しません
動作しない
とは?
スクリプトが動かないのでしたら、
スクリプトパラメータの値が間違っている。
位しか考えられません。
スクリプトですが
> If[ 0]
> Else If [Get(スクリプト引数)=1]
これは
If [ Get(スクリプト引数)=1 ]
1行でいいですね。
また、
ボタン1と2の動作で
検索実行
までは共通の様ですから、
レイアウト切り替えの前で分岐すれば良さそうですよ。
Offline
Pages: 1
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 557.77 KiB (Peak: 578.3 KiB) ]