Использование Microsoft Query в Excel для добавления параметров даты в SQL-запрос - PullRequest
0 голосов
/ 10 октября 2018

Я часто использую функцию (в настоящее время устаревшую) в Excel, чтобы получать данные из SQL Server, где я вставляю фактический оператор SQL в лист Excel, и он отлично работает.Я изучал, как это сделать с помощью запросов, которые имеют параметры даты, которые необходимо менять при каждом запуске отчета, и сначала мне показалось, что использование Microsoft Query в Excel было бы лучшим вариантом.Это будет использовать «?»вместо самих дат и позволяют добавлять параметры.Всякий раз, когда я пытаюсь сделать это с помощью приведенного ниже запроса, я получаю сообщение об ошибке «Параметры не допускаются в запросах, которые не могут отображаться графически».Я, честно говоря, понятия не имею, что это значит, но оценил бы любой вклад.Мой запрос ниже.Спасибо

SELECT E.TEAM_MEMBER_NAME AS 'PURCHASER',
       M.DEPARTMENT, 
       M.BUSINESS_SEGMENT_CODE, 
       KB.BUSINESS_SEGMENT_DESC,
       KG.GENDER_DESC, 
       MR.PLANT_CODE [PLANT], 
       MR.STOCK_CATEGORY, 
       M.MATERIAL,
       M.[DESCRIPTION],
       M.COLOR_1,
       M.COLOR_2,
       MR.SIZE_LITERAL,
       MR.QUANTITY,
       M.STANDARD_COST,
       M.DEALER_PRICE,
       M.CURRENT_SEASON,
       MR.STOCK_NUMBER AS 'AFS PO #',
       H.PO_CREATED_BY,
       H.PO_TYPE,
       MR.MRP_INDICATOR,
       MR.STOCK_TYPE,
       H.PO_ISSUE_DATE

FROM   PDX_SAP_USER..VW_MRP_ALLOCATION MR 
JOIN   PDX_SAP_USER..VW_MM_MATERIAL M ON MR.MATERIAL = M.MATERIAL 
JOIN   PDX_SAP_USER..VW_KD_BUSINESS_SEGMENT KB ON M.BUSINESS_SEGMENT_CODE = KB.BUSINESS_SEGMENT_CODE
JOIN   PDX_SAP_USER..VW_KD_GENDER KG ON M.GENDER_CODE = KG.GENDER_CODE 
JOIN   PDX_SAP_USER..VW_PO_HEADER H ON MR.STOCK_NUMBER = H.PO_NUMBER 
JOIN   ADI_USER_MAINTAINED..SCM_PO_EMPLOYEE_NAME E ON MR.STOCK_NUMBER = E.PO_NUMBER 

WHERE  M.BUSINESS_SEGMENT_CODE NOT IN ('420','421','422','424')
AND    MR.STOCK_CATEGORY NOT LIKE 'A60383%'
AND    MR.STOCK_CATEGORY NOT IN ('A60382001','A60380070')
AND    M.MATERIAL NOT IN ('AY1480','CD4683')
AND    H.PO_TYPE NOT IN ('02','06','10','UB','DB')
AND    MR.MRP_INDICATOR IN ('A','N')
AND    MR.STOCK_TYPE = 'B'
AND    MR.QUANTITY >= 50
AND    H.PO_ISSUE_DATE BETWEEN '09/26/2018' AND '10/10/2018'

ORDER BY MR.QUANTITY DESC

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Я заставил это работать ... немного работы вокруг.Мой DBA создал представление на нашем сервере и выбрал все из этого представления.Затем я использовал MS Query для ввода данных и заменил даты на?.Оттуда в источнике данных в Excel вы можете назначить эти вопросительные знаки для ячеек, в которые вы вводите даты.Работает как шарм.И не брать кредит - весь кредит идет на:

https://www.youtube.com/watch?v=xPalEw4xw1w

0 голосов
/ 10 октября 2018

Короткий ответ: я тоже исследовал его в то время, стараясь изо всех сил передать параметры (скажем, ячейка «Лист1! А1») и не смог.Нет реального способа сделать это, если вы не используете Power Query, а также не используете хранимую процедуру SQL.Как вы думаете, вы можете попросить своего администратора баз данных (или того, кто отвечает за базу данных) создать хранимую процедуру для вас, в которой вы будете передавать параметры даты?Это в основном ваш единственный способ создать параметризованный запрос.

...