• ベストアンサー

アクセスで重複データの入力

アクセス97で顧客の管理しています。フォームから入力の際にカタカナで姓スペース名で入力していますが、入力の際に同じ名前があったら、メッセージでそのことが表示され、できれば内容が別フォームかテーブルでチェックできて、そこで入力を続行するか中止するか選択できるようにしたい。VBAが苦手なのでクエリーやマクロでできればうれしいのですが、簡単なVBAでできればVBAでも良いです。どなたか智恵をおかしください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

「T顧客」テーブルに、主キーである[ID]フィールド及び、「氏名」フィールドがあって、[氏名]に氏名をカナで入力しているものとします。 また、顧客入力フォーム上にテキストボックス「氏名」があって、そこで氏名を入力するものとします。 また、別途、顧客を表示するフォーム「F顧客表示」があるものとします。 「氏名」の[更新前処理]を「イベントプロシージャ」にし、右の[…]をクリックし、以下の内容を入力してください。 Private Sub 氏名_BeforeUpdate(Cancel As Integer)  Dim SQL As String  Dim RS As Recordset    SQL = "SELECT Count([氏名]) AS 重複氏名件数 FROM T顧客" _   & " WHERE [ID] <> " & Nz(Me![ID]) _    & " AND [氏名] Like '" & Trim(Me.[氏名].Text) & "';"  Set RS = CurrentDb.OpenRecordset(SQL, dbOpenSnapshot)    If RS![重複氏名件数] >= 1 Then   '重複する指名があったときは、F顧客表示フォームを開く   DoCmd.OpenForm "F顧客表示", acNormal, , "[氏名] Like '" & Trim(Me.[氏名].Text) & "'"   '追加するかどうか確認する   Select Case MsgBox("同じ氏名が既に入力されています。 もう一件追加しますか?" _    , vbYesNo + vbDefaultButton2 + vbInformation, "重複入力の確認")   Case vbYes    '[はい]を選んだときはそのまま何もせずに続行。   Case vbNo    '[いいえ]を選んだときは、キャンセルし、データの更新を取り消す    Cancel = True    Me.氏名.Undo    Me.Undo   End Select  End If End Sub 今回は動作チェックしてないので「自身なし」です(^^; 動かなければ補足入れてくださいね。

desk34
質問者

お礼

ありがとうございました。やっぱ書かなくては無理ですよね。 なかなか勉強できなくて、、、なんとかクエリーで思ったのですが・・・ 頑張って勉強します。

関連するQ&A

専門家に質問してみよう