2016-03-18 6 views
0

Ich baue eine Datenbank für Krebsforschungszwecke. Ich habe ein Formular namens "inputPI_form" erstellt. PI steht für "Principal Investigator" alias Forscher. tblPI ist nur eine Tabelle mit Vor- und Nachnamen.MS-Access: Ich kann nicht herausfinden, warum die Fehlermeldung nicht angezeigt wird

Hier ist meine Form:

enter image description here

Wenn Sie auf die Schaltfläche "Speichern", können Sie den unteren Code ausführen.

Ich habe einen zusammengesetzten Schlüssel in tblPI mit beiden Namen erstellt, um doppelte Datensätze zu verhindern. Dieser Code vermeidet doppelte Datensätze, aber es gibt keine MsgBox zeigt sich:

'Add new PI's name and verify uniqueness with composite key' 
Private Sub newPI_Button_Click() 

    'Declare duplication error number' 
    Const ERR_DUPLICATE_VALUE = 3022 

    On Error GoTo Err_Handler 

    'Declare database object and string variables' 
    Dim dbs As Database 
    Dim firstName As String 
    Dim lastName As String 

    'Capture firstName and lastName from inputPI_form as strings' 
    firstName = Forms("inputPI_form")!firstName.Value 
    lastName = Forms("inputPI_form")!lastName.Value 

    'Set the dbs object' 
    Set dbs = CurrentDb 

    'Excute SQL code to create new record in tblPI by passing firstName and lastName values' 
dbs.Execute "INSERT INTO tblPI (lastName, FirstName) VALUES " & _ 
    "('" & lastName & "','" & firstName & "');" 

    'Update the PI selection combobox on inputProtocolForm' 
    Forms("inputProtocolForm")!selectionPI.Requery 

    dbs.Close 
    DoCmd.Close acForm, "inputPI_form" 

Err_Handler: 
    If Err.Number = ERR_DUPLICATE_VALUE Then 
    MsgBox ("This PI's name is already taken. Please select another one.") 
    End If 
End Sub 

ich fangen Fehler in VBA nicht vertraut bin. Mache ich einen offensichtlichen Fehler? Ich würde das Feedback der Community sehr schätzen. Vielen Dank!

+1

Versuchen Sie, Ihren Error Handler zu vereinfachen. Nehmen Sie die If-Anweisung heraus und ersetzen Sie sie durch eine einfache 'Msgbox Err.Nummer & Err.description'. Hast du bekommen, was du erwartet hast? – PowerUser

+0

Eigentlich tat es !! So einfach! Wenn du deine Antwort postest, wähle ich sie !! Ich danke dir sehr!! – Johnathan

+0

Froh, Hilfe zu sein :) – PowerUser

Antwort

1

Versuchen Sie, Ihren Error Handler zu vereinfachen. Nehmen Sie die If-Anweisung heraus und ersetzen Sie sie durch eine einfache Msgbox Err.number & Err.description. Hast du bekommen, was du erwartet hast?

Verwandte Themen