OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 困ってます
  • 質問No.177392
  • 閲覧数197
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 52% (56/107)

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

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

  • 回答No.1
レベル13

ベストアンサー率 46% (643/1383)

「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

お礼率 52% (56/107)

ありがとうございました。やっぱ書かなくては無理ですよね。
なかなか勉強できなくて、、、なんとかクエリーで思ったのですが・・・
頑張って勉強します。
投稿日時 - 2001-12-18 00:00:36
-PR-
-PR-
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ