Если Dlookup не соответствует критериям в нескольких таблицах, отобразится ошибка. Microsoft Access - PullRequest
0 голосов
/ 29 января 2020

Хорошо, я мог бы воспользоваться некоторыми советами, поскольку я не часто использую VBA.

У меня есть форма, и в этой форме у меня есть подчиненная форма, построенная из таблицы make. Мне не нужно это менять.

Однако я хотел бы добавить проверку работоспособности перед нажатием кнопки загрузки, которая обновляет SQL сервер. Я застрял на функции IIf (Dlookup); Я пытаюсь заглянуть в локальную таблицу, и если три поля в локальной таблице соответствуют полям и критериям, указанным в моей подчиненной форме, то проверьте, соответствуют ли 5 ​​столбцов в моей подчиненной форме одному другому полю в моей подчиненной форме.

Для примера; В локальной таблице есть три поля: «ЕДИНИЦА», «ТИП», «Центр»

«Единица» Критерии следующие: 1212, 1213, 1214 и т. Д.

«ТИП» Критерии следующие: Магазин, Наружный, Иннербанк

«Центр» Критерии следующие: Магазин электротоваров, механический цех, магазин на улице.

*** Что мне нужно сделать сопоставить эти поля из таблицы, упомянутой выше, которая называется «Ledgend», с подчиненной формой в моей форме, и если эти Unit, Type и Center все присутствуют в строке в моей подчиненной форме, рассчитать (SUM) 5 полей в моей подчиненной форме и если он соответствует полю Total в моей подчиненной форме, оставьте его как есть, но если это не так, выделите строки, которые отличаются, и выведите ошибку msg

If DLookup("Unit", [dbo_TableName]) = "Unit", FORM![SUBFORM_NAME]!Unit & "TYPE", [dbo_TableName]) = "TYPE", FORM![SUBFORM_NAME]!TYPE, & _
    "Center", [dbo_TableName]) = "Center", FORM![SUBFORM_NAME]!Center Then
    subform Sum(Dis + ABS + Center + SS + WRK) 
Else
    MsgBox ("Error")
End If

1 Ответ

0 голосов
/ 29 января 2020

Sum () не используется для добавления полей, она используется для агрегирования записей. Синтаксис для DLookup совершенно неверный. Ссылка на subform не имеет смысла. Похоже, вам нужен вложенный If Затем. Далее предполагается, что код находится за подчиненной формой.

If Not IsNull(DLookup("ID", "Ledgend", "Unit & Type & Center'" = Me!Unit & Me!TYPE & Me!Center & "'")) Then
    If Me!Total <> Dis + ABS + Center + SS + WRK Then
        MsgBox "Error"
        'code here to set BackColor property of each control
        Exit Sub
    End If
Else
    Exit Sub
End If

Кстати, Ledgend - это неправильное написание Legend.

Может использоваться правило условного форматирования для управления настройкой свойства Backcolor.

...