Нарушение уникальности ключа

smitatyana
Дата: 07.12.2009 13:59:15
Здравствуйте!

При добавлении новой записи, возникает ошибка. Такое возможно, т. к. значения вводятся вручную, и чтобы избежать повторения табельных номеров, например, сотрудников, необходимо сделать так, чтобы пользователю выводилось нормальное сообщение об ошибке - не нарушение уникальности ключа, т.к. для пользователя - это пустой звук, а например сообщить - введите другой табельный номер!

подскажите, как сделать :)
smitatyana
Дата: 07.12.2009 14:02:13
Private Sub кн_Прием_Click()

On Error GoTo Err_кн_Отпуск_Click

Dim SQL As String ' запись в таблицу
SQL = "INSERT INTO [Личная карточка] ([ТАБНО], [ФАМИЛИЯ], [ИМЯ], [ДАТА_ПРИЕМА]) " & _
              "VALUES (" & Me.ТАБНО & "," & Me.ФАМИЛИЯ & "," & Me.ИМЯ & "," & Format$(Me.ДАТА_ПРИЕМА, "\#mm\/dd\/yyyy\#") & ")"
    
    CurrentDb.Execute SQL, 128 'dbFailOnError=128
    
    DoCmd.Close
    
End If

Exit_кн_Отпуск_Click:
    Exit Sub

Err_кн_Отпуск_Click:
    MsgBox Err.Description
    Resume Exit_кн_Отпуск_Click
    
End Sub
smitatyana
Дата: 07.12.2009 14:08:16
Опечатка малость вышла. Так вернее :)


smitatyana
Private Sub кн_Прием_Click()

On Error GoTo Err_кн_Прием_Click

Dim SQL As String ' запись в таблицу
SQL = "INSERT INTO [Личная карточка] ([ТАБНО], [ФАМИЛИЯ], [ИМЯ], [ДАТА_ПРИЕМА]) " & _
              "VALUES (" & Me.ТАБНО & "," & Me.ФАМИЛИЯ & "," & Me.ИМЯ & "," & Format$(Me.ДАТА_ПРИЕМА, "\#mm\/dd\/yyyy\#") & ")"
    
    CurrentDb.Execute SQL, 128 'dbFailOnError=128
    
    DoCmd.Close
    
End If

Exit_кн_Прием_Click:
    Exit Sub

Err_кн_Прием_Click:
    MsgBox Err.Description
    Resume Exit_кн_Прием_Click
    
End Sub
отакота
Дата: 07.12.2009 14:15:18
так у вас же есть обработчик ошибок - анализируйте там ошибку, и выдавайте вместо Err.Description НУЖНОЕ вам собщение.
smitatyana
Дата: 08.12.2009 05:59:58
Err_кн_Прием_Click:
    MsgBox "Введите неповторяющийся табельный номер!", , "Система управления персоналом"
    Resume Exit_кн_Прием_Click
  

Если я сделаю так, то не будет ли выводиться это сообщение на все другие, внезапно возникшие ошибки?
smitatyana
Дата: 08.12.2009 06:28:34
Как обработать именно эту ошибку?
ILL HEAD
Дата: 08.12.2009 06:42:50
сделайте так

1. выполните с
Err_кн_Прием_Click:
MsgBox Err.number
Resume Exit_кн_Прием_Click

запомните номер ошибки

2. исправьте на
Err_кн_Прием_Click:
if Err.number = номер_ошибки then
MsgBox "Введите неповторяющийся табельный номер!", , "Система управления персоналом"
Resume Exit_кн_Прием_Click
else msgbox "AHTUNG !!!" & vbcrlf & err.description
smitatyana
Дата: 08.12.2009 06:59:13
ILL HEAD
сделайте так

1. выполните с
Err_кн_Прием_Click:
MsgBox Err.number
Resume Exit_кн_Прием_Click

запомните номер ошибки

2. исправьте на
Err_кн_Прием_Click:
if Err.number = номер_ошибки then
MsgBox "Введите неповторяющийся табельный номер!", , "Система управления персоналом"
Resume Exit_кн_Прием_Click
else msgbox "AHTUNG !!!" & vbcrlf & err.description


Огромное вам спасибо. Я впервые просто обрабатываю ошибки на VB.
Красноярск - почти родной город - у меня там родственники.
Спасибо еще раз :)