• 締切済み

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

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

  • aiya0
  • お礼率58% (300/517)

みんなの回答

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.2

フォームでの入力が前提ですが、DCount 関数などを使えば重複の有無が 分かります。 テキストボックスの更新後イベントなどで、 If DCount("*","[テーブル名]","[フィールド名]=" & Me!テキストボックス名) > 0 Then   MsgBox "重複があります。" End If のようにしてみてください。 なお、上記は、フィールド名 が数値型を想定しています。

  • N_Shima
  • ベストアンサー率62% (53/85)
回答No.1

Accessではキー項目の無いテーブルの作成が可能ですが、動作速度の面で使用の推奨はされていません。 (レコード件数が増えると検索動作がとても長くなります) フォームでテーブルの各項目を直接リンクしてしまうと、入力している段階で検出する方法は実質無いと思われます。 フォームの入力項目をテキストボックス等の変数として扱い、入力が終わった段階でその値を使ってレコード検索し、重複するレコードがあるかないか判定してはどうでしょうか。 なお、レコード番号を何らかの方法で生成するようにして、入力しない項目としてテーブル内部だけで使用すれば、内容が重複するレコードを持つインデックスキー項目のあるテーブルが作れますよ。

aiya0
質問者

補足

フォームを使ってない場合はどうしたらいいでしょう? そんなんでデータベース使うなよって言わないでくださいね。簡単なものなので必要ないんです。 初心者です。 申し訳ないのですがおっしゃっている意味が分かりません。もうすこしやさしく教えていただけないでしょうか?

関連するQ&A

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

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

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

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

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

    アクセス初心者です。 テーブル1にNo.というフィールドがあります。そのフィールドは、データ型:数値型。フィールドサイズ:長整数型。インデックス:なし(重複なし)。にしてあります。 フォームでNo.に値を入れた時、同じ数字がある場合にエラーエッセージを出して、No.を再度入れなおすようにしたいのです。 現在同じ数字がある場合は、データが保存されずエラーメッセージも表示されていません。(ちなみにNo.に使用している数字は6桁です) どなたかご教授ください。よろしくお願い申し上げます。

  • エクセルのデータをアクセスのテーブルにインポート

    エクセルのデータをアクセスのテーブルにインポートしたくて、 アクセスから外部データのインポートでエクセルを指定してるのですが ************************************************************************ ワークシート インポートウィザード インデックス、主キー、またはリレーションシップで重複する値が生成されてるため、 テーブルを変更できませんでした。 重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。 ************************************************************************ になってしまいます。 エクセルの列名を見ても重複していないし(COUNTIF関数で確認しました) アクセス側のウィザードでインデックスはどこのフィールドにもつけてないし、 「主キーを設定しない」もしくは「主キーを自動的に設定する」にしているのに、何をやっても上記のエラーがでます。 ググっても同じようなエラー内容が見つからないのですが、どうしたらいいでしょう? ヴァージョンはエクセルは2007、アクセスは2010です。バージョンの相違が原因でしょうか?

  • アクセスの重複データ抽出について

    アクセスで添付画像のようなテーブルがあり、重複データの抽出を行いたいです。 抽出結果は 1 50 4 1 -50 5 1 50 8 5 -70 19 5 70 1 となるようにしたいです。 つまり、 ・フィールド1が同じ 且つ フィールド2の絶対値が等しい ・ただしフィールド2が「0より大きいのみ」 または「0より小さいのみ」 の場合は抽出しない (プラスとマイナスの値が最低1つずつ含まれる) という条件です。 abs関数を使い、フィールド2の絶対値を出すのは出来たのですが、そこから先で行き詰っています。 どのように行えばよいか、お分かりの方お教え下さい。 よろしくお願いいたします。

  • Access2000で重複データに・・・

    Access2000の重複データの処理について質問です。 あるフィールドの重複レコードを検索し、該当するレコードの別フィールドに「●」をつけようとしています。ただ、重複する最初のレコードには「●」をつけたくないのです。 例えば  aaa ・・・ (1)  bbb  aaa ・・・ (2)  ccc  aaa ・・・ (3)  eee というフィールドだった場合、(1)には「●」をつけずに(2)以降にのみつけたいのです。 重複クエリで重複レコードを抽出して重複テーブル作成→重複テーブルと元テーブルを組み合わせて更新クエリ作成という方法でやったのですが、そうすると(1)にも「●」がついてきます。(当然ですが・・・) 何か名案があれば教えてください。 やはり、VBAを使わないと無理でしょうか・・・?

  • インデックス「いいえ」 インデックス「はい (重複

    アクセスのテーブルについて質問なんですが インデックス「いいえ」 インデックス「はい (重複あり)」 の違いはなんでしょう? はい (重複なし)にすると、インデックス「いいえ」 と見た目は変わらないけど、 検索や並べ替えをする時に若干早くなるって事でしょうか? インデックス「はい (重複なし)」にした場合は、 主キーと同様、重複した値を入力できないので 違いが一目瞭然にわかりました。

  • ACCESS2007 重複について

    ACCESS2007を使用してます。 下記のように、IDコードのフィールドがあり、このコードに対して、重複しているデータ全てにフラグ1をたてたいのです。 <現在のテーブル> IDコード  ――――――+ 12345  12345  12378  12378  23457  23489  23456  <作成したいテーブル> IDコード 重複フラグ ――――――+――――――――+ 12345 1 12345 1 12378 1 12378 1 23457  23489  23456  重複フラグのフィールドは、現在のテーブルにありません。 どのようなクエリやSQLを作成すればいいでしょうか? よろしくお願い致します。

  • アクセスで重複データの抽出について

    アクセスで添付画像のようなテーブルがあり、重複データの抽出を行いたいです。 抽出結果は 120 0 となるようにしたいです。 つまり、 ・フィールド1を基準に、フィールド2が全て0だった場合のみ抽出する という条件です。 どのように行えばよいか、お分かりの方お教え下さい。 よろしくお願いいたします。

  • ACCESSの重複クエリについて

    ACCESSの重複クエリは、 重複する値を抽出してくれるということですが、 その際、二つのテーブルは全て同じフィールドでないと いけないのでしょうか? よろしくお願いします<m(__)m>

専門家に質問してみよう