#ms-access #vba
#ms-access #vba
Вопрос:
Я застрял с моим плохим знанием запроса MS Access. У меня есть 2 таблицы.
1. Table Output and
2. Dump : this is a linked table to an excel file
Я использовал пользовательскую функцию объединения, найденную вhttp://allenbrowne.com/func-concat.html
У меня всего 8 разных запросов, как показано ниже:
Query_1 : DELETE table FROM [Output];
Query_2 : INSERT INTO [Output] (SERVICE_REQUEST_NO) SELECT DISTINCT SERVICE_REQUEST_NO
FROM Dump
ORDER BY SERVICE_REQUEST_NO;
Query_3 : SELECT DISTINCT i.SERVICE_REQUEST_NO, ConcatRelated(
"EMERTEL_NO",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") AS EMERTEL_NOss
FROM Dump AS i;
Query_4 : SELECT DISTINCT i.SERVICE_REQUEST_NO, ConcatRelated(
"LOGGED_DATE",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") AS LOGGED_DATEss
FROM Dump AS i;
Query_5 : SELECT DISTINCT i.SERVICE_REQUEST_NO, ConcatRelated(
"PART_NO",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") AS PART_NOss
FROM Dump AS i;
Query_6 : SELECT DISTINCT i.SERVICE_REQUEST_NO, ConcatRelated(
"PART_DESC",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") AS PART_DESCss
FROM Dump AS i;
Query_7 : SELECT DISTINCT i.SERVICE_REQUEST_NO, ConcatRelated(
"STATUS_DESC",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") AS STATUS_DESCss
FROM Dump AS i;
Query_8 : SELECT DISTINCT i.SERVICE_REQUEST_NO, ConcatRelated(
"STATUS_DATE",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") AS STATUS_DATEss
FROM Dump AS i;
Моя проблема в том, что я хочу обновить или вставить вывод всех этих запросов в таблицу «Вывод» для соответствующего "SERVICE_REQUEST_NO"
поля
Дайте мне знать, если вы хотите взглянуть на мою базу данных MS Access.
Пожалуйста, помогите мне.
Спасибо за поддержку полей вывода таблицы
Ответ №1:
Сначала вы должны объединить это в один запрос. Таким образом, каждый запрос выбирает только один столбец из Dump
таблицы. Если вы разделите запросы, вам придется JOIN
обрабатывать каждый из них, что является проблемой и создает больше возможностей для ошибок. В качестве одного запроса это будет выглядеть:
INSERT INTO [Output]
(
SERVICE_REQUEST_NO,
EMERTEL_NOss,
LOGGED_DATEss,
PART_NOss,
PART_DESCss,
STATUS_DESCss,
STATUS_DATEss
)
SELECT DISTINCT
SERVICE_REQUEST_NO,
Concatrelated(
"EMERTEL_NO",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """")
AS EMERTEL_NOss,
Concatrelated(
"LOGGED_DATE",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """")
AS LOGGED_DATEss,
Concatrelated(
"PART_NO",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """")
AS PART_NOss,
Concatrelated(
"PART_DESC",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """")
AS PART_DESCss,
Concatrelated(
"STATUS_DESC",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """")
AS STATUS_DESCss,
Concatrelated(
"STATUS_DATE",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """")
AS STATUS_DATEss
FROM [Dump]
Я не совсем уверен, почему вы используете DISTINCT
в каждом запросе, не видя ваших фактических данных. Для целей этого ответа я предполагаю, что вы используете его, чтобы избежать точного дублирования строк в [Output
. Единственный DISTINCT
в верхней части моего списка выбора позаботится об этом.