MS Access 03 - многократное «если» в одном поле критериев запроса на обновление? - PullRequest
0 голосов
/ 22 июля 2009

Можно ли выполнить запрос на обновление и в одном поле запустить несколько обновлений, таких как:

"Джо Доу" обновлен до 334 и "Барри Дэвис" обновлен до 456 и т. Д.

По сути, я хочу преобразовать имя в число (в моем случае это будет ID сотрудника), и у меня около 500 сотрудников, поэтому одно за другим немного исключено. таблица импортирована из Excel, и я не знаю, как сделать этот предварительный импорт Ethier!

спасибо за любую помощь!

Ответы [ 2 ]

3 голосов
/ 22 июля 2009

Хотя в Access можно использовать несколько операторов Iif, вы, вероятно, захотите сделать это с помощью запроса на обновление в Access.

Трудно быть уверенным без более подробной информации о ваших источниках данных - я предполагаю, что у вас уже есть таблица в вашем Access, перечисляющая имена пользователей по их идентификаторам (которые я называю пользователями). Если у вас еще нет таблицы Access, в которой перечислены имена пользователей и идентификаторы, вам нужно ее получить.

Я также предполагаю, что вы импортировали данные, которые хотите обновить, из Excel в таблицу с именем ExcelImport.

Очевидно, вам нужно заменить имена таблиц, использованные в моем примере, на ваши настоящие имена таблиц.

Вместо того, чтобы заменять имя пользователя в данных Excel, может быть целесообразнее добавить новый столбец в ExcelImport для хранения идентификатора пользователя.

  1. Создание нового запроса («Создать новый запрос в режиме конструктора»)

  2. Добавление таблиц Users и ExcelImport к вашему запросу

  3. Создайте связь между таблицами, щелкнув и перетащив между полями «имя пользователя» в таблице «Пользователи», а затем отпустив поле «Имя пользователя» в ExcelImport. Это связывает две таблицы вместе в этом поле.

  4. Измените тип запроса на Обновление (Запрос> Обновить запрос)

  5. Дважды щелкните поле имени пользователя ExcelImport (или поле дополнительного идентификатора пользователя, если вы его используете), чтобы настроить его для обновления. Он должен появиться в первой колонке нижней части конструктора запросов.

  6. В поле «Обновить до:» этого столбца введите [Users]. [UserID]

  7. Запустить запрос. Должно появиться окно сообщения с просьбой подтвердить, что вы хотите обновить n строк. Нажмите OK для подтверждения.

Учитывая, что ваши данные поступают из Excel, вы должны проверить, что все идентификаторы пользователей были установлены правильно, поскольку вполне возможно, что "Джо Доу" в данных Excel хранится как "Джозеф Доу" в таблице пользователей - в которой В этом случае вам нужно вручную отредактировать данные Excel, чтобы получить совпадение.

1 голос
/ 22 июля 2009

У меня около 500 сотрудников, поэтому один на время немного вне вопроса

Определенно:)

Рассмотрим это, используя стандартную таблицу последовательности ошибок с уникальными INTEGER значениями:

SELECT SWITCH(
              seq = 1, 1, 
              seq = 2, 2, 
              seq = 3, 3, 
              seq = 4, 4, 
              seq = 5, 5, 
              seq = 6, 6, 
              seq = 7, 7, 
              seq = 8, 8, 
              seq = 9, 9, 
              seq = 10, 10, 
              seq = 11, 11, 
              seq = 12, 12, 
              seq = 13, 13, 
              TRUE, 999
             ) AS seq_1
FROM Sequence;

После 14 случаев выдается ошибка «Слишком сложное выражение в выражении запроса». Так что я не думаю, что вы получите где-то около 500 случаев!

Лучше сделать это справочной таблицей.

...