No.6ベストアンサー
- 回答日時:
#2、#4です。
>重複クエリでテーブルを作成するのでしょうか?
>具体的な方法をご指導いただけると、大変助かります!
#2でも書いたように
1.チェック用テーブルを作成する
2.チェック用フィールドを1.のテーブルに作り、プライマリーインデックスか、重複を許さないインデックスを付ける
3.このテーブルに追加クエリーかADOなどでチェックしたいデータを追加する
4.重複していればエラーが発生するので、これをトラップする
具体的コードを提示できればよいのですが、VBAはとうの昔に忘れたので残念ながらできません。もし具体的コードが必要であれば、新しい質問として投稿した方が良いでしょう。
No.5
- 回答日時:
どのような作業をなさっておられるのか、
どのくらいの顧客レコードがあるのか、
どのくらいの規模で運用するのかにもよりますが、
実データ入力時に、カナ検索などを行えるようにしておき
該当レコードが見つからなかったときに、新規登録というフローも
ありえます。
No.4
- 回答日時:
#2です。
>通常の顧客テーブルに別で氏名チェック用のテーブルを作成するということでしょうか?
その通りです。
データが重複する欠点は有りますが、楽です。たとえば「氏」+「名」+「都道府県」の重複をチェックなども簡単にできます。
ところで他者の回答を批判するのは気が引けますが
>確認するまでもない重複ですので告知して削除するのみです。
全部のフィールドを入力させて、それから「告知して削除する」って随分意地悪ではないでしょうか?
名前の重複時点で全フィールドを表示し、入力オペレーターに警告する方が親切だと思います。
返信ありがとうございます!
ご回答に下記のようにありますが、
>データが重複する欠点は有りますが、楽です。たとえば「氏」+「名」+「都道府県」の重複をチェックなども簡単にできます。
重複クエリでテーブルを作成するのでしょうか?
具体的な方法をご指導いただけると、大変助かります!
No.3
- 回答日時:
Custtomer:
ID__KName_______ZipCode_____Address1__Address2__Address3________Building___________TEL________________FAX
01__鈴木 一郎___101-1111__東京都____葛飾区_____一丁目一番地__新日本ビル1F__111-111-1111__111-111-1112
02__中村 主水___101-1111__東京都____葛飾区_____一丁目一番地__新日本ビル1F__222-111-1111__111-111-1112
03__鈴木 一郎___102-2222__大阪府____枚方市_____一丁目一番地__西日本ビル1F__333-111-1111__111-111-1112
04__鈴木 一郎___101-1111__東京都____葛飾区_____一丁目一番地__新日本ビル1F__111-111-1111__111-111-1112
この場合、3番目のレコード入力が完了した時点では重複の警告は出さないでしょう。
この場合、4番目のレコード入力が完了した時点のみ重複の警告を出すでしょう。
しかも、[ID]から[FAX]までの全ての列が重複していれば確認の警告は無用かと思います。
その場合は、確認するまでもない重複ですので告知して削除するのみです。
だが、[ID]から[Building]まで重複している場合、[TEL」、[FAX]列の確認の意味合いで確認が必要です。
現実のデータを考えると、このようであると思います。
Private Sub KName_AfterUpdate()
Dim Answer As Integer
Dim strWhere As String
Answer = vbYes
strWhere = "KName ='" & Trim(Me.KName) & "' AND ID<>" & Nz(Me.ID)
If DBLookup("ID", "Customer", strWhere, 0) <> 0 Then
Answer = Verify("同姓同名の新規顧客として追加登録しますか?")
End If
If Answer = vbYes And Nz(Me.ID) = 0 Then
Me.ID = DBMax("ID", "Customer") + 1
End If
End Sub
このように列[Kname]入力後に DLookup()、Dcount() を用いて重複チェックするなんてのは通常はしないです。
ただ、この場合、カレントレコードをチェック対象から外しておかないととんでもないことになるので注意が必要です。
No.2
- 回答日時:
条件が曖昧ですが、一応
1.同姓同名はあり得る
2.「氏」「名」は別フィールド
3.氏名登録時に重複チェック、警告、後に詳細登録
だとします。アイディア的には
氏名チェックテーブルを作り、氏名フィールドにプライマリインデックスを設定
氏名登録時に登録ボタンを押すと、「氏」+「名」で氏名を作成し、氏名チェックテーブルの氏名フィールドに追加登録する。この際にエラーが出れば警告を発生。
こんな感じで如何でしょうか?
早速のご回答ありがとうございます!
1.同姓同名はあり得る→ありえます
2.「氏」「名」は別フィールド→同一フィールドです
3.氏名登録時に重複チェック、警告、後に詳細登録→はい
の条件で入力できればと思います。
『氏名チェックテーブルを作り、氏名フィールドにプライマリインデックスを設定』とは、通常の顧客テーブルに別で氏名チェック用のテーブルを作成するということでしょうか?
初心者の質問で大変恐縮ですが、よろしくお願いします。
No.1
- 回答日時:
単にフィールドがテーブルにリンクしているなら、テーブル側で
「インデックス」を「はい」にしてしまう、という姑息な手段が
無いわけじゃないんですが。
それより、氏名入力の「氏」「名」は同一フィールドですか?
氏名の中間空白の有無を嫌って往々にして別フィールドにしますが
別フィールドになってると同一人のチェックは一筋縄じゃ行きませんよ。
おまけに入力中にVBAを処理させると、「チェックボタンを押す」という
一動作が余計にかかったり、リアルタイムで処理させると処理が遅くて
入力に追いつかなかったりするんですけど、それDめおいいんですか?
また「同姓同名」は本当にいないんですか? 入力時に弾いてしまうと
同姓同名データが来た時に入力できなくなりますよ?
そういった問題がありますので、通常は「後でチェックする」んですが。
「後でチェックする」場合は、テーブルをExcelに吐き出して、ソート
する方が簡単で良いです。ソートしておいて、「1つ上の氏名と同じ
ならば1、さもなければ0」というIF文で一気にチェックすれば一発です。
早速のご回答ありがとうございます!
『氏』『名』は同一フィールドです。
FEX2053さんの文頭にありました、インデックスを『はい』にしてしまう方法は単純ですが、同姓同名の場合の登録が不可能なんですよね・・・。
宛名ラベルなどを作成する際に、エクセルにインポートして、重複チェックをしていますが、関数のIF文を使用した検索方法以外でチェックしていましたので、参考にさせていただきました。ありがとうございました!
VBAの式は難解で他の方の回答をもとに試行錯誤しています(*。*)
アクセス初級者が扱うにはなかなか大変ですね。他の方法もあるようなので、もう少し頑張ってみます!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- その他(データベース) accessについて 2 2022/05/31 16:58
- その他(プログラミング・Web制作) Accessの代わりのノンプログラムデータベース作成 4 2022/10/21 09:26
- Access(アクセス) Accessフォームで複数条件でフィールドの値を表示する方法 4 2022/07/21 10:47
- Excel(エクセル) 関数の式を教えてください 2 2022/04/04 11:15
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでテーブルの値をテキス...
-
ACCESSでの改行コード
-
INSERT INTO ステートメントに...
-
ACCESSでテーブルのチェックを...
-
accessで重複を防ぎたい
-
ExcelのデータをコピーでACCESS...
-
Accessのフィールド数が255しか...
-
アクセス エラーを数値「0」に...
-
ACCESS 入力文字数制限
-
ACCESSで400以上のフィールドが...
-
Access 昇順・降順で並び替え...
-
Accessで連続データってできま...
-
ACCESS VBAにてCSV...
-
FileMakerの繰り返しフィールド...
-
ACCESS レーダーチャートのデー...
-
【Access】フォームで自動計算...
-
Access 2000で顧客データ入力す...
-
通貨型で\\0の時、何も表示しな...
-
SQLServer2005のSQL文での別名...
-
ExcelのデータをAccessのテーブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブルの値をテキス...
-
Accessのフィールド数が255しか...
-
ACCESSでの改行コード
-
INSERT INTO ステートメントに...
-
ACCESSで400以上のフィールドが...
-
Access 昇順・降順で並び替え...
-
SQLServer2005のSQL文での別名...
-
【Access】フォームで自動計算...
-
ACCESSで和暦を西暦に・・・
-
accessで重複を防ぎたい
-
アクセス エラーを数値「0」に...
-
accessのレポートで元になるテ...
-
ExcelのデータをコピーでACCESS...
-
主キーはオートナンバー型のID...
-
アクセス VBAで列の入れ替...
-
Accessで、固定アルファベット+...
-
Access:リンクテーブルマネー...
-
ACCESS検索★ある文字を複数のフ...
-
アクセスのテーブルデータをCSV...
-
ACCESSでテーブルのチェックを...
おすすめ情報