- ベストアンサー
アクセスで重複データの入力
アクセス97で顧客の管理しています。フォームから入力の際にカタカナで姓スペース名で入力していますが、入力の際に同じ名前があったら、メッセージでそのことが表示され、できれば内容が別フォームかテーブルでチェックできて、そこで入力を続行するか中止するか選択できるようにしたい。VBAが苦手なのでクエリーやマクロでできればうれしいのですが、簡単なVBAでできればVBAでも良いです。どなたか智恵をおかしください。
- みんなの回答 (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 今回は動作チェックしてないので「自身なし」です(^^; 動かなければ補足入れてくださいね。
お礼
ありがとうございました。やっぱ書かなくては無理ですよね。 なかなか勉強できなくて、、、なんとかクエリーで思ったのですが・・・ 頑張って勉強します。