2

Access 2007 には、新しい連絡先をテーブルに追加するためのフォームがあります。

RecSet.AddNew
RecSet![Code_Personal] = Me.txtCodePersonal.Value
RecSet![FName] = Me.TxtFName.Value
RecSet![LName] = Me.txtLName.Value
RecSet![Tel Natel] = Me.txtNatTel.Value
RecSet![Tel Home] = Me.txtHomeTel.Value
RecSet![Email] = Me.txtEmail.Value
RecSet.Update

これはこれまでのところ機能しており、連絡先は正常に追加されています。しかし、私は2つの問題を抱えています:

  1. 連絡先が正常に追加されたことをユーザーに知らせるメッセージボックスを表示したい
  2. 連絡先が正常に追加されなかった場合
    1. この名前の連絡先は既に存在します
    2. 別の問題
      次に、「連絡先は既に存在します」または「エラーが発生しました」というメッセージ ボックスをそれぞれ表示します。

これを行う私の考えは次のとおりです。

If recSet.Update = true Then
MsgBox "Paolo Bernasconi was successfully added"
Else if RecSet![FName] & RecSet![LName] 'already exist in table
MsgBox "Contact already exists"
Else 
MsgBox "An unknown error occured"

このコードが間違っていて、明らかに機能しないことはわかっていますが、これは、私が何を達成しようとしているのかを示すためのものです。事前にご協力いただきありがとうございます。

4

1 に答える 1

1

プロシージャにエラーハンドラを追加します。

On Error GoTo ErrorHandler

次に、レコードセットを更新した直後に、ユーザーに「成功」​​通知を表示します。

RecSet.Update
MsgBox RecSet![FName] & " " & RecSet![FName] & _
    " was successfully added"

更新の試行が失敗した場合、フロー制御はセクションに渡されErrorHandlerます。

ErrorHandler:
    MsgBox "Oops!"

間違いなく、「おっと!」よりも洗練されたものが必要です。メッセージ。巧妙なアプローチは、Select Caseブロックを使用してエラー番号に基づいて応答をカスタマイズすることです。

連絡先を追加する前に、連絡先がすでに存在するかどうかを確認してください。

strCriteria = "Fname = '" & RecSet![FName] & "' AND LName = '" & _
    RecSet![LName] & "'"
Debug.Print strCriteria
If DCount("*", "YourTable", strCriteria) > 0 Then
    ' do not attempt to add it again
    MsgBox "Contact already exists"
Else
    RecSet.AddNew
    ' and so forth
End If

Debug.Printビルド時に間違えた場合に備えて、出力を確認してくださいstrCriteria

ここでの目的は、存在しない連絡先を追加しようとするだけで、重複エラー状態を回避することです。そのため、エラーは発生せず、その他のエラーはエラーハンドラによって処理されます。

于 2012-12-02T17:01:12.770 に答える