2016-03-18 27 views
0

Kanser araştırmaları için bir veritabanı oluşturuyorum. "InputPI_form" adlı bir form oluşturdum. PI, araştırmacının "Baş Araştırmacı" anlamına gelir. tblPI sadece ilk isimleri ve soyadları olan bir tablodur. Eğer "Kaydet" düğmesine tıkladığınızda, alt kod çalıştırmasınaMS-Access: Hata iletisinin neden görünmediğini anlayamıyorum

enter image description here

:

İşte benim şeklidir.

Herhangi bir yinelenen kaydı önlemek için iki ad kullanarak tblPI'de bir bileşik anahtar oluşturdum. Bu kod yinelenen kayıtları önler ancak gösterilmesini hiçbir MsgBox vardır:

'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 

VBA hatalarını yakalanmasında aşina değilim. Bariz bir hata mı yapıyorum? Topluluğun geri bildirimlerini çok takdir ediyorum. Teşekkür ederim!

+1

Hata İşleyicinizi basitleştirmeyi deneyin. If deyimini çıkar ve yerine basit bir 'Msgbox Err.number & Err.description' oldu. Beklediğini aldın mı? – PowerUser

+0

Aslında, öyle! Çok basit! Cevabınızı gönderirseniz, onu seçerim !! Çok teşekkür ederim!! – Johnathan

+0

Yardım için çok sevindim :) – PowerUser

cevap

1

Hata İşleyicinizi basitleştirmeyi deneyin. If ifadesini çıkar ve yerine basit bir Msgbox Err.number & Err.description oldu. Beklediğini aldın mı?

İlgili konular