コードの重複チェック
お世話になっております。
現在、コード(文字列)の重複チェックを照会リンクの戻り値に論理変数を入れ
論理変数が返ってきたときに重複としています。
しかし、0001が登録済みの場合 00010や00001が重複として登録が出来ませんでした。
そもそもの重複チェックの仕方が良くないのでしょうか。
ご教示願います。
-
yamamotoさん、
そのような場合は、普通はインデックスの「重複不可」を使うのですが、それが使えない何か理由がありますか?
-
tandaさん、コメントありがとうございます。
インデックスの「重複不可」もしていますが、それだけだとエラー表示がデータ登録時で遅いのでこのような作りになりました。
この仕様では、エラー表示のタイミングをコントロール検証と指定できるので利用しています。
インデックスの「重複不可」でエラー表示のタイミングを変えることはできるのでしょうか。
方法があれば教えていただきたいです。
-
yamamotoさん、
インデックスの重複不可は、値を入力した瞬間に重複エラーが出ますよ。
APGで作ったような簡単なプログラムでテストしてみるとよく分かりますよ。 -
yamamotoさん、
ひょっとして、レコード後処理を通過するまえにチェックしたいということでしょうか?
-
yamamotoさん、
「データ登録時」というのがレコード後処理を通過する時ということだったんですね。
それでは、冒頭のyamamotoさんのご質問にある「重複チェック」の式はどうなっていますか?
-
tandaさん、
言葉足らずで申し訳ございませんでした。
おっしゃる通り、レコード後処理を通過する前(入力時)にチェックしたいです。
データ登録時=レコード後処理のことで、インデックスの重複不可はレコード後処理通過時でエラー表示されました。
現状の重複チェックは
変数(論理)を作り、照会リンクの戻り値に変数(論理)を入れています。
エラー表示はコントロール検証でエラー条件には変数(論理)を入れています。
上手く説明できないので下記にスクショを貼ってみました。
1枚目がデータビューで2枚目がロジックです。


-
yamamotoさん、
照会リンクの「位置付小・大」の式はどうなっていますか?
-
tandaさん、
照会リンクの位置付というのは照会する項目の位置付ということでよろしいですか?
今回は得意先マスタなので以下の通りです。
メインソース 得意先マスタ
C=カラム 得意先コード
V=変数 VL_得意先コード存在チェック 論理
照会リンク 得意先マスタ
得意先コード 位置 小にC=カラム 得意先コードを入れています。
-
yamamotoさん、
位置付の「大」はどうなっていますか?
-
tandaさん、
大は位置付していません。
理由は特になく、サンプルPGがそうだからです。
-
yamamotoさん、
「大」の指定がないと、完全一致のチェックになりませんよ。
-
tandaさん、ありがとうございます。
ちょっとのことで躓いていたなんて恥ずかしいですが勉強になりました。
大の指定をして無事00010が通りました!
-
yamamotoさん、
サンプルプログラムは、「完全一致」のリンクではなく、「最初にみつかったもの」へのリンクという用途で用いられているのではないでしょうか?用途の違いに注意しましょう。
-
yamamotoさん、
ぜんぜん恥ずかしいことではありませんよ。こういう積み重ねで、だんだんMagicが理解できてくると思います。頑張ってください。
-
tandaさん、改めてありがとうございます。
サンプルプログラムの仕様についても理解しつつ頑張ってみます!
-
SQL Serverを私も使っておりますが、レコード登録時の重複チェックがデフォルトだと思いますが
以下を設定することで、早い点検をしてくれます。
私も昔教えて頂きました。
-
私の場合は、担当者マスタ登録、商品マスタ登録、得意先マスタ登録など
データベース設定にCHECK_KEY = YESを設定することで、
既に登録済と同じコードで登録を進めようとするのを防ぐ事を任せています。
とはいえ自分で照会リンク等で書くのも有りだと思います。 -
nkmtさん、コメントありがとうございます。
早速テストしてみましたが確かに入力後エラー表示がされました!
使わせて頂きます。ありがとうございました!
サインインしてコメントを残してください。
コメント
18件のコメント