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

このQ&Aに関連する最新のQ&A

A 回答 (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

今回は動作チェックしてないので「自身なし」です(^^;
動かなければ補足入れてくださいね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/18 00:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報