Изменение соединения с базой данных SQL в файле Excel разрывается, даже если новый запрос SQL работает в Access - PullRequest
0 голосов
/ 18 января 2020

У меня есть файл Excel с подключением к базе данных Access, который обновляется при открытии файла Excel (Access 2010 и Excel 2010). Для заполнения таблицы используется запрос SQL. Когда-то этот запрос работал нормально:

SELECT U.WkEnd, U.Error, COUNT(U.Error) AS [Count], M.NumOpen
FROM tbl_002_Updates AS u
INNER JOIN 
(SELECT Finish-Weekday(Finish,5)+7 AS WkEnd, COUNT(*) AS NumOpen FROM tbl_001_Master WHERE Status IN ('A', 'M') 
   GROUP BY Finish-Weekday(Finish,5)+7) AS M 
ON M.WkEnd = U.WkEnd
WHERE U.Error IS NOT NULL AND Year(U.WkEnd) = 2020
GROUP BY U.WkEnd, U.Error, M.NumOpen
ORDER BY U.WkEnd;

Я обновил запрос следующим образом:

SELECT T.WkEnd, T.Error, T.WkNum, m.NumOpen
FROM 
(
SELECT DISTINCT D.WkEnd As WkEnd, 'DED' As Error, NZ(P.WkNum, 0) As WkNum from tbl_002_Updates AS D LEFT JOIN 
   (SELECT WkEnd, Count(Error) As WkNum FROM tbl_002_Updates WHERE Error = 'DED' GROUP BY WkEnd) AS P 
   ON D.WkEnd = P.WkEnd 
UNION 
SELECT DISTINCT D.WkEnd As WkEnd, 'PCS' As Error, NZ(P.WkNum, 0) As WkNum from tbl_002_Updates AS D LEFT JOIN 
   (SELECT WkEnd, Count(Error) As WkNum FROM tbl_002_Updates WHERE Error = 'PCS' GROUP BY WkEnd) AS P 
   ON D.WkEnd = P.WkEnd 
UNION 
SELECT DISTINCT D.WkEnd As WkEnd, 'Planner' As Error, NZ(P.WkNum, 0) As WkNum from tbl_002_Updates AS D LEFT JOIN 
   (SELECT WkEnd, Count(Error) As WkNum FROM tbl_002_Updates WHERE Error = 'Planner' GROUP BY WkEnd) AS P 
   ON D.WkEnd = P.WkEnd
)  AS T 
INNER JOIN 
(SELECT Finish-Weekday(Finish,5)+7 AS WkEnd, COUNT(*) AS NumOpen FROM tbl_001_Master WHERE Status IN ('A', 'M')
   GROUP BY Finish-Weekday(Finish,5)+7)  AS M 
ON M.WkEnd = T.WkEnd
WHERE Year(T.WkEnd) = 2020
ORDER BY T.WkEnd;

Новый запрос работает нормально в Access. Я не изменил информацию об аутентификации или что-либо еще, только текст команды подключения к Excel, и теперь я получаю сообщения об ошибке «Запрос не выполнен или не удалось открыть таблицу базы данных», а затем «Не удалось выполнить следующий диапазон данных Refre sh».

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

1 Ответ

0 голосов
/ 25 января 2020

это просто функция nz (), которая ломает ее, она работает, если вы замените ее на iif (isnull ())

...