Использование Null в критериях DLookup - PullRequest
0 голосов
/ 08 мая 2018

Я создаю базу данных для управления потоком людей в систему инцидентов и из нее.Моя идея состоит в том, чтобы использовать функцию DLookup, чтобы позволить мне идентифицировать нулевое значение в дату оформления заказа.Это позволило бы мне запретить кому-либо прыгать по инцидентам без предварительного выхода из системы.

Если возможно, я хотел бы получить идентификатор события и идентификатор команды, чтобы я мог создать сообщение об ошибке, чтобы сообщить мне об инцидентеэто член все еще привязан к.

'***Section 1 - Ensure member is Checked out and DEMOBed from previous incidents
'******Variables
'*********Variable to hold the Member ID
Dim id As Integer
'*********Variable to hold the checkout status
Dim checkout As String
'*********Variable to hold the Event ID
Dim eventID As Integer


'******Code Block 1 - Check for Null Values
id = Me.Text18
Forms![frm_ics238Table].Refresh

If Not IsNull(DLookup("[eventID]", "[frm_ics238Table]", "[checkoutDate] is Null And employeeID = '" & Me.Text18 & "'")) Then
    MsgBox "y"
End If
End Sub

1 Ответ

0 голосов
/ 08 мая 2018

Исходя из вашего исходного вопроса, который сейчас выглядит не так, как будто вы его отредактировали, чтобы указать обновленный код и ошибки, вы получили:

id = Me.Text18
Forms![frm_ics238Table].Refresh

If Not IsNull(DLookup("[eventID]", "[frm_ics238Table]", "[checkoutDate] is Null And employeeID = '" & Me.Text18 & "'")) Then
    MsgBox "y"
End If

Я думаю, что это может помочь:

  1. "[frm_ics238Table]" должно быть таблицей: "[tbl_ics238Table]"
  2. Идентификатор объявлен как целое число, но вы используете его как строка. Если employeeID - фактически числовое поле, удалите кавычки вокруг employeeID = '" & Me.Text18 & "'" Это должно выглядеть так employeeID = " & ID & "
  3. Вы также можете попробовать использовать IsNull([checkoutDate]) вместо [checkoutDate] is Null

ТАК это может выглядеть так:

If Not IsNull(DLookup("[eventID]", "[tbl_ics238Table]", "IsNull([checkoutDate]) And (employeeID = " & ID & ")")) Then
    MsgBox "y"
End If

Еще лучше было бы поместить критерии в строковую переменную, чтобы вы могли сначала отладить и протестировать ее

Dim strCriteria as String
strCriteria = "IsNull([checkoutDate]) And (employeeID = " & ID & ")"
Debug.Print strCriteria

If Not IsNull(DLookup("[eventID]", "[tbl_ics238Table]", strCriteria)) Then
    MsgBox "y"
End If

РЕДАКТИРОВАТЬ: ДОКАЗАТЕЛЬСТВО КОДА РАБОТЫ:

Не то чтобы я не верил вам, но я не верю, что это не сработает, если то, что вы описали, соответствует моим предположениям.

Я успешно протестировал, используя предположения, что:

  • eventID - числовое поле
  • checkoutDate - поле даты / времени
  • employeeID - числовое поле

Моя таблица данных образца

table

Затем я помещаю командную кнопку в форму, чтобы проверить код:

Private Sub Command8_Click()
    Dim strCriteria As String
    Dim ID As Integer

    ID = 4

    strCriteria = "IsNull([checkoutDate]) And (employeeID = " & ID & ")"
    Debug.Print strCriteria

    If Not IsNull(DLookup("[eventID]", "[tbl_ics238Table]", strCriteria)) Then
        MsgBox "y"
    End If

End Sub

Наконец - проверка нажатия кнопки привела к:

Results

В заключение - если вы все еще получаете ошибку, вы можете обновить ваш вопрос с ОБА вашим кодом и дизайном вашего стола.

...