Проверка записи в текстовом поле, если дублирующее сообщение об ошибке Microsoft Access - PullRequest
1 голос
/ 19 февраля 2020

Я искал и не могу найти ответ, поэтому я использую Microsoft Access Office 2019 и, похоже, не могу проверить мое текстовое поле на наличие дублирующейся записи. Пользователь добавит запись и введет краткий текстовый первичный ключ (в данном случае это идентификатор нового сотрудника) Поле - [EMPID] в таблице [EMPDETAILS]. Приведенный ниже код работал для проверки моего первичного ключа Autonumber, но, похоже, не работает для настраиваемого первичного ключа короткого текста, и я получаю эту ошибку

"Выражение, введенное вами в качестве параметра запроса, привело к этой ошибке : 'VS123'

<= это идентификатор сотрудника, который представляет собой настраиваемый первичный ключ короткого текста: </p>

Private Sub unqidd_BeforeUpdate(Cancel As Integer)

On Error GoTo Err_Handler

Dim strMessage As String
'PartNum is the name of a textbox that contains the primary key, the rest are text to display.
strMessage = "Employee ID" & Me!unqidd & " already exists."

' confirm that part number doesn't already exist.
If (DLookup("[empid]", "[empdetails]", "[empID] = " & Forms![driverdetails]![unqidd])) Then
    MsgBox strMessage, vbInformation, "Invalid Operation"
    Cancel = True
End If
Exit_Here:
Exit Sub

Err_Handler:
MsgBox Err.Description
Resume Exit_Here

End Sub

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Так как вы пытаетесь добавить строку в [empID] Я собираюсь предположить, что это строковое поле, и в этом случае вам нужно включить кавычки:

If (DLookup("[empid]", "[empdetails]", "[empID] = '" & Forms![driverdetails]![unqidd] & "'")) Then
0 голосов
/ 19 февраля 2020

Решение выглядит следующим образом:

1) Создайте несвязанное текстовое поле (Text1616) и установите его источник управления как

=DLookUp("[empid]","[empdetails]","[empID] = '" & [Forms]![Driverdetails]![unqidd] & "'")

2) Текстовое поле (Unqidd), которое потребуется для быть проверенным, в свойстве beforeupdate установите код процедуры события, как показано ниже:

Private Sub unqidd_BeforeUpdate(Cancel As Integer)

On Error GoTo Err_Handler

Dim strMessage As String
'PartNum is the name of a textbox that contains the primary key, the rest are text to 
display.
strMessage = "Employee ID" & Me!unqidd & " already exists."

' confirm that part number doesn't already exist.
If Me.unqidd.Value = Me.Text1616 Then
    MsgBox strMessage, vbInformation, "Invalid Operation"
    Cancel = True
End If

Exit_Here:
Exit Sub

Err_Handler:
MsgBox Err.Description
Resume Exit_Here

End Sub


'References :
'Table Name        : empdetails
'Table primary key : empid (Short text)
'Form Name         : Driverdetails
'Textbox 1         : unqidd (no formats, control source : empid)
'Textbox 2         : Text1616 (Unbound Textbox)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...