- ベストアンサー
Access2000重複データの入力について
アクセス初心者です。 名前 値1 値2 という3つのフィールドにフォーム(表形式)で入力する際、名前が重複した時点で入力出来なくなるような仕掛けが作りたいのですが、どのような方法があるのでしょうか? インデックスの”はい(重複なし)”の設定で重複データの入力回避が出来るという所にやっとたどり着いたのですが、値2の入力終了までメッセージが出ない様なので、入力ロスを感じております。 初歩的な質問だとおもいますがよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
キーになるフィールドのプロパティのイベントでフォーカス喪失時に DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,acMenuVer70 の記述を入れればキーのフィールドから次のフィールドへ移る際にキーを保存しにいくので重複チェック出来ます。
その他の回答 (3)
- O_cyan
- ベストアンサー率59% (745/1260)
>重複データのレコード番号や値1,値2が瞬時に確認できるような仕掛けが作りたく >なった次第です。(私のレベルでは無茶でしょうか?) 大丈夫ですよ。クエリの使い方で比較的簡単に出来ます。 例えばクエリを作りフォームのキーになるフィールドに入力された値を抽出条件に 設定して(名前がキーになっていればクエリの名前フィールドの抽出条件に =[Forms]![フォーム名]![名前] と設定)そのクエリをフォーム上にボタンを作り ボタンにそのクエリの実行を設定すれば重複のエラーが出た際にそのボタンをクリック するとフォームのキーの値を基にクエリで抽出されレコードを表示することができます。 これは単純な例ですが色々工夫すれば出来ますよ。
お礼
早速やってみました。 いやぁほんと勉強になります。 しかしまた次から次と疑問と欲が出てきてしまい悪戦苦闘中です。 クエリ表示した後、フォームに戻るには?とか重複してたら音を鳴らしてそれでもってカーソルはフォーム上に残しつつフォームの横にさりげなく重複データの確認ができるような…(つい調子にのってしまいましたすいません。) というわけでこの辺でいったんこの質問を終わらせたいと思います。 O_chanさん最後までありがとうございました。 MovingWalkさんきっかけをどうもありがとうございました。 whitecaさんすばやい回答どうもありがとうございました。 少し修業してまいります。
- MovingWalk
- ベストアンサー率43% (2233/5098)
アクセスでは、普通に入力するとレコードを移動した時点で書きこまれますので、名前フィールドに入力が終った時点ではチェックされません。 チェックする場合はフォームを作成して、名前フィールドから次のフィールドへ移動する時(フォーカスが失われた時)そのレコードを書きこんでエラーチェックする必要があります。(イベントプロシージャを記述します)
お礼
どうもありがとうございます。 設定だけでは無理だということがわかりました。 フォームでの仕掛け(イベントプロシージャの使用)が必要なのですね。 簡単ではないと思いますがイベントプロシージャの使い方を勉強してみます。
「名前」を主キーに設定すればいいがでしょうか?
お礼
早速の回答どうもありがとうございます。 主キーの設定もしてみたのですが、やはり値1,値2の入力完了後でなければ重複の確認が出来ないようなのですが。 何かやり方が悪いのでしょうか…
お礼
どうもありがとうございます。(遅くなってすいません。) なるほど… 確かに名前入力後に重複チェックしてくれる事がわかりました。(最初はどこに記述すればよいのかもわかりませんでしたが…) しかし今度は更に欲が出てきてエラー時に重複データのレコード番号や値1,値2が瞬時に確認できるような仕掛けが作りたくなった次第です。(私のレベルでは無茶でしょうか?) この質問をした時は、イベントで処理するなんてことは全然発想できず、解決への方向性が無でしたが、皆さんのアドバイスで少しずつですが前進しております。 本当にどうもありがとうございました。