ここから本文です

アクセスの顧客入力フォームで、新規登録の際、住所での重複チェックを行っていま...

まいさん

2020/4/213:17:34

アクセスの顧客入力フォームで、新規登録の際、住所での重複チェックを行っていますが、時間が3秒ほどかかるため、短い時間でチェックできる方法はありませんか。

(Okでも重複でも)住所は、2フィールドに分かれています。テーブル設定での重複をなくすなどの方法ではなく、あくまでフォーム上でしたいです。
現在、更新前に
Private Sub k_add2_BeforeUpdate(Cancel As Integer)
Dim stradd As String
Dim varcheck As Variant
If Not IsNull(k_add1) Then
stradd = k_add1 & k_add2
varcheck = DLookup("[kaiinID]", "t_kokyaku", "[k_add1] & [k_add2] ='" & stradd & "'")
If Not IsNull(varcheck) Then
MsgBox "この住所は登録済み、" & varcheck & "を確認してください。"
Cancel = True
Me.Undo
End If
End If
End Sub
としていますが、何か良い方法はありますか?

閲覧数:
18
回答数:
3

違反報告

ベストアンサーに選ばれた回答

アバター

ID非公開さん

2020/4/301:18:28

フィールド連結させての検索はあんまり良くないと思うのですが、
DLookup関数 の criteria って And ダメなんでしたっけ?

varcheck = DLookup("[kaiinID]", "t_kokyaku", "[k_add1] = '" & k_add1 & "' And [k_add2] = '" & k_add2 & "'")

これであんまり変わらなければ、[k_add1] と [k_add2] で複数フィールドのインデックスを作成する。

あと DLookup("COUNT([kaiinID])" か、DCount関数 の方が良いかも。


ダメだったらゴメンナサイm(__)m

質問した人からのコメント

2020/4/4 11:33:17

ありがとうございます。おかげ様で2秒短縮出来ました!
Andでこんなに変わるものなんですね。
いつも使用するフォームなのでかなり助かりました。
ありがとうございます。
ちなみにdlookにしてても大丈夫でした!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

kak********さん

2020/4/222:16:06

テーブル上に、[k_add1] & [k_add2]を格納する列を追加して、その列にインデックスを設定すると早くなるのではと思います。

[k_add1] & [k_add2]を格納する列名を k_add3 とすると、
varcheck = DLookup("[kaiinID]", "t_kokyaku", "[k_add3] ='" & stradd & "'")

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

typ********さん

2020/4/216:46:23

DLookupよりSQLの方が早いそうですけど、どうでしょうか?

Private Sub k_add2_BeforeUpdate(Cancel As Integer)
Dim stradd As String
Dim errmes As String
Dim RS As Recordset
Dim strSQL As String
If Not IsNull(k_add1) Then
stradd = k_add1 & k_add2
strSQL = "SELECT kaiinID,k_add FROM(SELECT kaiinID, k_add1 + k_add2 as k_add FROM t_kokyaku) WHERE k_add='" & stradd & "'"
Set RS = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
If Not RS.EOF Then
errmes = "この住所は登録済み、" & RS!kaiinID & "を確認してください。"
End If
RS.Close: Set RS = Nothing
If errmes <> "" Then
MsgBox errmes
Cancel = True
Me.Undo
End If
End If
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる