Вычисляемое поле со значением из другой таблицы в Microsoft Access

У меня есть вычисляемое поле в таблице, которое должно принимать значение из другой таблицы, но в окне генератора выражений оно не позволяет мне выбирать значения из других таблиц. Затем я попытался создать форму из таблицы и поместил в систему управления версиями нужную мне функцию, но она вызывает ошибку #Name? в форме.

Это код, который я поместил в систему управления версиями (функция Iff):

=IIf([Stato]="Vendita";[Costo ivato 1 pezzo]+(([Costo ivato 1 pezzo]/100)*[Provv_Vendita]![Costo]);[Costo ivato 1 pezzo]+(([Costo ivato 1 pezzo]/100)*[Provv_Prevendita]![Costo]))

[Stato] и [Costo ivato 1 pezzo] — это два поля в одной таблице (называемой Prodotti), которая имеет следующую структуру:

Stato      Costo Ivato 1 pezzo

Vendita         10
Prevendita      20

Другая таблица (называемая Provvigioni) похожа на

Tipo        Costo

Vendita       1,5
Prevendita    5

Provv_Vendita и Provv_Prevendita — это два запроса, которые выбирают нужные мне значения и структурированы следующим образом.

SELECT Provvigioni.Costo
FROM Provvigioni
WHERE Provvigioni.Tipo="Vendita";

Есть ли способ взять поле из другой таблицы и использовать его в функции первой таблицы?


person Ponzaro    schedule 05.05.2015    source источник
comment
С этим вопросом довольно много проблем. 1) В вашем заявлении IIF вы использовали точку с запятой (;), а не запятую (,). 2) Вы, вероятно, получаете ошибку #Name? в своей форме, потому что поля, на которые вы ссылаетесь в своем заявлении IFF, не существуют в форме (т.е. вы не указали форму Источник записи, который ссылается на таблицу/запрос содержащие эти поля). 3) В таблице Provvigioni вы сказали, что Vendita имеет Costo 1,5... это должно быть так или 1,5? 4) Ваше утверждение IIF больше подходит для запроса (см. мой ответ ниже).   -  person Matt Hall    schedule 05.05.2015


Ответы (2)


Я не уверен на 100%, что вам здесь нужно, но я подумал, что было бы лучше сначала показать вам, как связать ваши 2 таблицы в запросе.

Перейдите в «Создать» > «Дизайн запроса»:

введите здесь описание изображения

Добавьте обе свои таблицы (дважды щелкните их):

введите здесь описание изображения

Затем закройте окно Показать таблицу; теперь у вас должны быть таблицы в конструкторе запросов:

введите здесь описание изображения

Нажмите и перетащите из Stato в Tipo; это должно создать соединение между этими полями:

введите здесь описание изображения

Дважды щелкните все ваши поля в каждой таблице, чтобы они появились в запросе:

введите здесь описание изображения

В следующем доступном поле для вашего запроса щелкните правой кнопкой мыши в поле «Поле» и выберите «Масштаб»:

введите здесь описание изображения

Поместите туда свое заявление IIF; предваряйте его именем поля и двоеточием, например, так:

введите здесь описание изображения

...Обратите внимание, что я немного подправил ваш оператор IFF, так что теперь он выглядит так:

MyCalculatedField: IIf([Stato]="Vendita",[Costo ivato 1 pezzo]+(([Costo ivato 1 pezzo]/100)*[Costo]),[Costo ivato 1 pezzo]+(([Costo ivato 1 pezzo]/100)*[Costo]))

Нажмите OK в окне «Масштаб». Нажмите «Выполнить», чтобы увидеть результат вашего запроса:

введите здесь описание изображения

Вот что получается в результате запроса (убедитесь, что вычисляемое поле соответствует вашим ожиданиям):

введите здесь описание изображения

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

введите здесь описание изображения

...и назовите это как-нибудь:

введите здесь описание изображения

Затем вы можете перейти в «Создать» > «Дизайн формы»:

введите здесь описание изображения

На странице свойств с правой стороны перейдите на вкладку «Данные» и используйте раскрывающийся список рядом с «Источник записи», чтобы выбрать только что сохраненный запрос:

введите здесь описание изображения

Если вы перейдете в «Дизайн»> «Добавить существующие поля», вы сможете добавить поля из своего запроса для использования в своей форме (дважды щелкните или перетащите их, чтобы они появились в вашей форме):

введите здесь описание изображения

Надеюсь это поможет!

person Matt Hall    schedule 05.05.2015
comment
Поразительнй! Единственная критика заключается в том, что в моей версии access я использую точку с запятой в качестве разделителя для полей функций, я думаю, что это проблема локализации, я живу в Италии. Спасибо, в любом случае - person Ponzaro; 05.05.2015
comment
Ага, хорошо! не понял, что формулы меняются в зависимости от местоположения :) - person Matt Hall; 05.05.2015

Создайте запрос.

Добавьте две таблицы и создайте соединение между Stato и Tipo.

Теперь вы можете выбрать [Costo] и [Costo Ivato 1 pezzo].

person Gustav    schedule 05.05.2015