2016-11-25 5 views
1

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

фона:

У меня есть список уникальных записей. Для каждой записи у меня есть монотонно возрастающая картина (A, B или C) и назначенная ей позиция развития (от 1 до 5).

Таким образом, каждый из трех шаблонов представлен в пяти полях, представляющих период разработки.

Проблема:

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

Пример:

Извиняюсь, не знаю, как прикрепить таблицу здесь, но поля ниже, таблица транспонирования этих полей.

ID - (1,2,3,4,5) 
Pattern - (A, B, C, A, C) 
Dev - (1,5,3,4,2) 
1 - (20%, 15%, 25%, 20%, 25%) 
2 - (40%, 35%, 40%, 40%, 40%) 
3 - (60%, 65%, 60%, 60%, 60%) 
4 - (80%, 85%, 65%, 80%, 65%) 
5 - (100%, 100%, 100%, 100%, 100%) 
Output - (20%, 100%, 60%, 80%, 40%) 

В MS Excel я мог бы просто использовать функцию HLOOKUP или OFFSET для этого. Но как это сделать в Access? Самое лучшее, что я придумал до сих пор: Output: Eval ([Category]), но это не похоже на то, что я хочу, чтобы выбрать поле «Dev» и рассматривать это как поле при построении выражения.

На практике у меня более 100 периодов разработки, и более 800 различных шаблонов, поэтому методы «переключения» здесь не могут работать.

Заранее спасибо, alch84

+0

Я удалил тег MySQL, так как ваш вопрос не имеет ничего общего с MySQL. –

+1

Опубликовать образцы данных: http://ozh.github.io/ascii-tables/ – Andre

+0

Итак, у вас есть две таблицы? Шаблоны принадлежат отдельной таблице, но я не понимаю вашу базу данных. – shawnt00

ответ

0

Если предположить, что

  1. [ID] представляет собой уникальный столбец (первичный ключ), и
  2. столбец источник для [выход] зависит только от величины из [Dev]

, то это похоже на работу:

UPDATE tblAlvo SET Output = DLOOKUP("[" & Dev & "]", "tblAlvo", "ID=" & ID) 

До:

ID Pattern Dev 1 2 3 4 5 Output 
-- ------- --- -- -- -- -- --- ------ 
1 A   1 20 40 60 80 100 
2 B   5 15 35 65 85 100 
3 C   3 25 40 60 65 100 
4 A   4 20 40 60 80 100 
5 C   2 25 40 60 65 100 

После:

ID Pattern Dev 1 2 3 4 5 Output 
-- ------- --- -- -- -- -- --- ------ 
1 A   1 20 40 60 80 100  20 
2 B   5 15 35 65 85 100  100 
3 C   3 25 40 60 65 100  60 
4 A   4 20 40 60 80 100  80 
5 C   2 25 40 60 65 100  40 
+0

Спасибо, Горд - хорошо выглядит, но что, если у меня нет первичного ключа? Плохая практика, которую я знаю, но мои таблицы Access импортируются из книги Excel, у которой нет первичного ключа. – Alvo

+0

Если '(ID, Pattern, Dev)' уникально идентифицирует строки, вы можете добавить их в аргумент WHERE DLOOKUP (третий параметр, '" ID = "& ID &" AND Pattern = '"& Pattern & ... '). В противном случае вы могли бы импортировать из Excel создать столбец первичного ключа AutoNumber для вас. –

+0

Спасибо @GordThompson. 1. Эта формула работает, но дает «#Error!». вниз по полю. 'Dlookup (" ["& [Dev] &"] "," tblAlvo "," C Lob = "& [C Lob]" AND P Item = "& [P Item] &" AND Year = "AND [Year ]) '. 2. Импорт из Excel не позволил мне создать столбец первичного ключа AutoNumber (по крайней мере, потому, что я напрямую привязываюсь к источнику данных с помощью связанной таблицы). – Alvo

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