2017-02-21 14 views
0

У меня есть 2 таблицы в моей БД. Один называется Производство и другой продукт.Microsoft Access - Dlookup с несколькими критериями из разных таблиц

В таблице Производство имеет 2 поля:

  • Номер
  • Имя

Таблица Продукт имеет 3 поля:

  • Номер
  • Имя
  • Номер изготовителя

Что я хочу, когда я создаю новый продукт, он показывает мне, если продукт уже существует. В настоящее время я использую этот код:

DLookup("[Name]", "Product", "[Name] = '" & me.txtName.value & "'") 

Он работает просто отлично, но когда-то случился, что продукт с таким же названием, но разными производителями. Из-за этого я не мог создать запись.

Я не мог создать новую запись, если это тот же самый продукт и то же производство, что и уже созданные.

Как создать один Dlookup для нескольких критериев в разных таблицах?

ответ

2

Я подозреваю, что вы действительно не хотите смотреть на разные таблицы. Вы хотите, чтобы предотвратить добавление продукта с тем же именем и производителем как существующий продукт, так что вы хотите, чтобы проверить оба поля в Product таблице:

DLookup("[Name]", "[Product]", "[Name] = '" & me.txtName & "' And Manufacture_Number = " & me.txtMfrNumber) 

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

Обратите внимание, что вам не нужно указывать .Value в конце me.txtName, так как Value является свойством по умолчанию вашего текстового поля.

+0

Это сработало .. Большое вам спасибо. –

1

Вы должны гнездо DLookups как это:

DLookup("[Name]","Product","[Name]='" & me.txtName.value & "' AND Manufacture_Number=" & Nz(DLookup("Number","Manufacture","[Name]='" & me.txtManufactureName.value & "'" ,0))) 

Я использую Nz, чтобы избежать ошибок при DLookup возвращает нулевое значение.

Смежные вопросы