みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM11 Win7利用
フィールドAのオプション,値一覧(入力制限)としています。
インポート時にはどうしても値一覧以外の値が入ってしまいます。
スクリプトA始動時にフィールドAに値一覧以外の値が入っていると、エラーメッセージを表示することはできますか?
(エラーメッセージは「値が正しくありません」)
よろしくお願い致します。
Offline
入力制限を、常時制限に変更します。エラーが出たレコードは、インポートされていません。
インポート後にエラー番号を取得するといいでしょう。
Offline
エラーであってもインポートしたいのなら、、
エラーか否かの判定は
PatternCount ( ValueListItems ( ファイル名 ; 値一覧名 ) ; フィールドA )
でできます。
これを使った計算フィールドでアラートを表示できますね。
Offline
FilterValuesの方がいいかも知れない。
ごもっとも、、です;;;
ちょっと使わない関数が出てこない・・・老人性健忘症 ;;
Offline
FilterValues ( ValueListItems ( ファイル名 ; 値一覧名 ) ; フィールドA )
ですか?
Offline
判別するのだから計算結果は論理値でないと、
FilterValues(ValueListItems(Get(ファイル名);"値一覧名"); フィールドA)<>""
とか
ValueCount(FilterValues(ValueListItems(Get(ファイル名);"値一覧名"); フィールドA))
でないと。
Offline
If[FilterValues(ValueListItems(Get(ファイル名);"値一覧名"); フィールドA)<>""]
カスタムダイヤルログを表示[error;"値が正しくありません"]
End if
としてみましたが、
値一覧名内の値の場合、ダイヤルログが表示されて、
値一覧名内の値と違う場合、ダイヤルログが表示されないです。
希望と逆になってしまっています。
どこをなおせばいいのでしょうか?
Offline
<>を=にする
条件が逆です
If [ FilterValues(ValueListItems(Get(ファイル名);"値一覧名"); フィールドA) = "" ]
ですが、、
スクリプトですか?
スクリプトだと、1レコードずつ見てゆかなければダメですよね。
計算フィールドでアラート表示なら、何もしなくてもいいですよね。
Offline
<>を=にする
でいけました!
ありがとうございます。
しかし、カスタムダイヤルログですと、標準で"OK"と"キャンセル"ボタンがあるのですが、どちらのボタンでも次へ進んでしまいます。
エラーメッセージみたいにフィールドの復帰的な感じで前に戻ることは出来ないのでしょうか?(値を必ず変更するようにしたいのです)
ちなみにチポ様がいう
計算フィールドでアラート表示
とはどうやるのでしょうか?
Last edited by Gajiro (2014-02-22 01:44:31)
Offline
FilterValues ( ValueListItems ( ファイル名 ; 値一覧名 ) ; フィールドA )
の計算フィールドを作って、
エラー処理[オン]
ユーザによる強制終了[オフ]
インポート
Loop
検索実行[計算フィールド=""]
If[Get(対象レコード数)]
カスタムダイアログ[入力しろ]
スクリプト一時停止
EndIf
EndLoop
インポートで入れてしまうと不正なデータがそのうち何レコードあるかわからないので
全部正常になるまでループ。
Offline
別の計算フィールドを作って式を
Case(FilterValues(ValueListItems(Get(ファイル名);"値一覧名"); フィールドA) = "" ;"値が正しくありません")
とすると全レコードに渡って計算される。
同じ式をテキストフィールドの計算値自動入力に設定して、インポート時の
自動入力オプションをオンにするとインポートされた対象レコードにのみ
表示される。
フィールドにエラーメッセージを表示するのではなく、ダイヤルログでエラーメッセージを表示する事はできないでしょうか?
Offline
>FilterValues ( ValueListItems ( ファイル名 ; 値一覧名 ) ; フィールドA )
>の計算フィールドを作って、
これは検索用だから、表示しないでもいいのでは。
フィールドでエラー表示しても、どのレコードか検索しないと意味無いですし。
waderさんのスクリプト一時停止を試してみました?
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 574.36 KiB (Peak: 590.9 KiB) ]