• ベストアンサー

アクセスでエラーメッセージを出したいのですが。

KAERU_VXVの回答

  • ベストアンサー
  • KAERU_VXV
  • ベストアンサー率60% (18/30)
回答No.4

項目「NO」の更新前処理に次のようにコードを記述してみてわ。 ======================================================= Private Sub NO_BeforeUpdate(Cancel As Integer) Dim DB As Database Dim R As Recordset Dim FLG As Integer Set DB = CurrentDb SQL = "SELECT * FROM テーブル1 WHERE NO = " & NO If IsNull(NO) Then FLG = 1 '登録 Else Set R = DB.OpenRecordset(SQL, dbOpenSnapshot) If R.EOF Then FLG = 1 '登録 Else FLG = 2 'キャンセル End If R.Close End If If FLG = 1 Then '登録処理の実行 Else '処理をキャンセル MsgBox "このNoは既に登録されています。" Cancel = True SendKeys "{ESC}" End If End Sub ======================================================= ※DCOUNTでも出来ますが件数が多くなると処理時間がかかる場合があります。  処理時間の事を考えるとRECORDSETをOPENするやり方をお勧めします。

mini_hana
質問者

お礼

KAERU_VXVさん。ありがとうございます。できました!処理時間はやはり重要だと思うので、KAERU_VXVさんのを利用させていただきます。本当にありがとうございました。

関連するQ&A

  • アクセス97で重複データのときに

    アクセス97で、テーブルにデータを入力する時にそのフィールドで値が重複していた場合、メッセージを出すやり方を教えてください。 インデックスで重複なしにはできません。 (重複する場合もあるのです。ただし、確認のためメッセージだけは出したいのです。) よろしくお願い致します。

  • Access2003 コントロールの(?)エラーメッセージ

    Access2003 コントロールの(?)エラーメッセージ excelからインポートしたデータでテーブルを作り、そこから、今後もデータを増やしていけるようにフォームを作ろうとしています。 まず、オートフォームでフォームを作りました。 データの中に「カテゴリー」を表示するフィールドがあり、そこはフォーム入力時にプルダウンで選んで登録できるように、コンボボックスを使ってカテゴリーフィールド(コントロール)を作りなおしたところ、「例えば数値型のフィールドに文字列を挿入しようとした」というようなエラーメッセージが出ます。 このフィールドは元からテキスト値が入っていたところで、プルダウンで選べるようにしたカテゴリーリストのテーブルの方もテキスト値で入力しています。 なので、このエラーメッセージが「例えば」と言っているのと全く同じエラー(数値型のフィールドにテキスト値を入れる)がでているわけではないとは思うのですが、他に何が悪のいかがわかりません。 どこをどうしたらいいのでしょうか?

  • レコードの検索・移動

    こんにちは。 先日、レコードの検索・移動で、お尋ねしたのですが、 やはり、解決できません。Q&Aで、"レコード" "検索"で調べましたが、 ヒットした53件の中には、ちょうどいいのがありませんでした。 もう一度、質問させていただきたいと思います。お願いします。Access2000です。 現在あるフォームを利用して、 フォームヘッダにテキストボックスを作成し、 その中に、[ID]の番号を入力したら、検索して、 その番号のレコードに移動し、欲を言えば、 その後に、[フィールド1]にカーソルが移動して欲しいのです。 [ID]のデータ型は、テーブルのデザインビューにて、 オートナンバー型でなく、数値型にしています。 フィールドサイズは、整数型。書式:数値、小数点以下桁数:0、 値要求:いいえ、インデックス:はい(重複なし)。です。 お願いできませんでしょうか?

  • Access 分割したテーブルを一対一で結合。新規レコードが作れなくなりました

    過去に同様の質問が無かったようなので質問します。 Access2002です。 これまで顧客名簿を一つのテーブルで管理していたのですが、フィールド数が増えてきたので、 テーブルを5分割しました。 主テーブルに対し副テーブル4つを、主テーブルのID(主キー、オートナンバー型)と副テーブルそれぞれのID(数値型)で一対一結合しています。 下記のようなイメージです。 テーブルA-テーブルB テーブルA-テーブルC テーブルA-テーブルD テーブルA-テーブルE すると、 新規レコードの登録が出来なくなってしまいました。 全部のテーブルを結合させたクエリを作って、そのクエリを基にフォームを作ったり、 主テーブルのフォームに副テーブルのサブフォームを4つ設置したり、 幾つか方法を試みたのですが、どれも同じエラーメッセージが出ます。 ↓ 「インデックス、主キー、またはリレーションシップで値が重複しているので、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。」 非常に基本的な質問なのかも知れませんが、お手上げです。 どなたかご教授くだされば幸いです・・・。

  • ACCESS2000の主キー重複について

    いつもお世話になっています。 早速ですが、お教えください テーブル名:AMaster フィールド名:B があります。 「B」は主キーになっていまして、ユーザーが任意に数字をいれることになります。 主キーになっていますので基本的には重複しないのですがユーザーの押し間違いなどによって重複してしまった場合 [Microsoft][ODBC Microsoft Access Driver] インデックス、主キー、またはリレーションシップで値が重複しているので、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。 といったエラーメッセージが出ます。これは出ても構わないのですがツールバーの「戻る」でしか今後の操作ができなくなってしまうので(ユーザーはPC超初心者)何らかの形でエラーメッセージとともに任意のページへ戻れるようにしたいと考えています。 つきましては、「B」フィールドにあるデータとこれから入力される数値が重複していたら・・・という記述をお教えいただきたいと思います。 ASPにて作成していますのでそれに対応した記述ですとありがたいです。 過去のログに似たようなものがありましたがこちらを参照してもボクにはわかりませんでした。 http://okweb.jp/kotaeru.php3?q=357614 ボクも何分初心者なのでわからないことだらけですがよろしくお願いします。

  • accessでのエラー

    Access2000で作られたものなのですが(知人の会社ですでに辞めた人が作ったもの) ハードを2年位前にXPに入れ替えたためAccess2003で使っていました。 受注Noを主キーにして受注管理票と工程管理票を作っているのですが、昨日まで順調に入力できていたのですが今日になって入力完了し登録しようとすると 「インデックス、主キー、またはリレーションシップで値が重複しているので、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。」 とエラー表示され先に進みません。 インデックスや主キー等はいじっていません。 試しに新しくデータを作成し全てインポートしてみたのですが同じ結果でした。 ちなみにデータはコンバートせずに使っていましたが、コンバートしてみても同じでした。 Access2000のCDはどこにあるかわかりませんが2000にしたら治るものなのでしょうか。 仕事に使われているため非常に困っております。 何卒宜しくご教授お願いいたします。

  • access エラーメッセージの変更

    主キーや重複なしのインデックスに設定されているフィールドに対して、既存のレコードと同じデータを入力・保存しようとすると、エラーメッセージが表示されますが、そのメッセージを変更する方法はないでしょうか?

  • access2003 「#エラー」を文字列にしたい

    テキスト型に入れた値を数値に変換し、「#エラー」を文字列にしたい テーブル1のデザインビューで ・フィールド1 テキスト型 ・主キーなし として データを 1 2 あ を投入します。 そして SELECT CLng(テーブル1!フィールド1) AS 数値型に変換 FROM テーブル1; クエリを作りました。 1と2は数値に変換されますが、文字列を入れた「あ」は 「#エラー」になります。  「#エラー」を「未設定」という文字列にしたいのですが どうすえばいいのでしょうか? よろしくお願いします。

  • Access2000重複データの入力について

    アクセス初心者です。 名前 値1 値2 という3つのフィールドにフォーム(表形式)で入力する際、名前が重複した時点で入力出来なくなるような仕掛けが作りたいのですが、どのような方法があるのでしょうか? インデックスの”はい(重複なし)”の設定で重複データの入力回避が出来るという所にやっとたどり着いたのですが、値2の入力終了までメッセージが出ない様なので、入力ロスを感じております。 初歩的な質問だとおもいますがよろしくお願いいたします。

  • アクセス2件

    アクセス超初心者の私ですが、2つの質問があります。 (1)フィールドのデータでオートナンバーを設定したクエリーを、フォームで新規作成しようとすると、『インデックスが有効範囲ではありません』という警告が出て作れません。 (2)同テーブルに2つのリレーションシプを設定したいときはどうしたらよいのでしょうか?ひとつ設定した後にもうひとつ設定しようとすると、『主テーブルで参照されているフィールド用の固有インデックスが見つかりません』という警告が出ます。 どうぞよろしくお願いします。