Страницы: Пред. 1 2
RSS
Получение данных из SQL по условию в ячейках
 
проявления моббинга, как и проекции, не украшают ваш форум...
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Зато нас украшает JeyCi :)
 
вам снова кажется...
мне тоже кажется, что вы начинаете оффтоп самостоятельно - пока это не превращается в факт...
Изменено: JeyCi - 09.04.2015 18:51:42
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
JeyCi написал: ... не украшают ваш форум...
Off
Он так и не стал для вас вашим - за 2.5 года и при 891 сообщении?! Не верю!
ps JeyCi, поймите же - эти мордераторы - сплошь мэнсчизны, и чтобы они... Простите, словом, им их некоторую слабость... ;) С уважением, Z.
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Чтобы в конструкторе "сделать" JOIN надо добавить еще одну таблицу и поле из первой мышом перетащить на поле из второй таблицы (как в Access). UNION не поддерживается(только ручками).

Еще вопрос появился (да простят меня модераторы). А параметр может быть только один?
Изменено: TheBestOfTheBest - 09.04.2015 20:57:09
Неизлечимых болезней нет, есть неизлечимые люди.
 
Цитата
TheBestOfTheBest написал:  А параметр может быть только один?
пост#23 скрин 3 - наверно, не один - надо пробовать
p.s. и вам спасибо за ответ - буду пробовать...
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
TheBestOfTheBest написал: А параметр может быть только один?
Нет, зайди в редактор sql, как у Jeyci на скрине, и в нужном месте поставьте знак вопроса.
Вернитесь в excel и задайте ссылку на значение параметра.
 
Вроде работает, только ... Как теперь показать ВСЕ записи? Звездочка не работает.

Есть еще один способ отобрать по фильтру в ячейке, совсем про него забыл. В умной таблице (а подключение всегда выводится в умную таблицу) над строкой заголовков ввести значение фильтра над соответствующем полем.
Изменено: TheBestOfTheBest - 10.04.2015 07:50:17
Неизлечимых болезней нет, есть неизлечимые люди.
 
Что бы отобрать все записи можно применить старый хакерский прием :)
добавим в условие отбора еще параметр
Код
or 1=?

создадим ссылку на значение в ячейке и теперь при вводе в нее 1 получим все записи.
 
Не работает, т.к. два параметра через AND требуют всех записей по первому условию и отбор по второму. Оба поля - строки.

Есть решение, в ячейку вводим %.
Изменено: TheBestOfTheBest - 10.04.2015 09:38:53
Неизлечимых болезней нет, есть неизлечимые люди.
 
учите sql
 
Цитата
B.Key написал: 1) Нет, зайди в редактор sql, как у Jeyci на скрине, и в нужном месте поставьте знак вопроса.
2) Что бы отобрать все записи можно применить старый хакерский прием or 1=?
3) учите sql
резюме:
1) в "Данные-Подключения-Свойства" либо "Существующие подключения-Открыть-Свойства" и ручками в поле Запроса поправить SQL-инструкцию... нажимать ОК даже если xl не согласен... при повторном обновлении - он уже всё понимает
2) работает на ура "or 1=?" в отдельную ячейку... thanks
3) МОЖНО создавать и видеть Визуальное представление запроса на языке SQL в приложении Microsoft Query (как пост№26)
Изменено: JeyCi - 18.04.2015 21:20:20
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Всем привет!
Прошу помощи :)

Есть следующий SQL запрос. Нужно значения параметров брать из ячеек Excel.
Очень прошу помочь с решением вопроса :)
В Excel запрос выводится через подключение. Есть ли возможность там задать значение параметра из ячейки?
Заранее бБольшое спасибо за помощь!


Declare @startdate date
, @finishdate date

Set @startdate = '26/09/2022'
Set @finishdate = '22/10/2022';

--Нормы
with norms as(
Select
prodid
,Sum (PROCESSTIME) as PROCESSTIME
From dbo.PRODROUTE (nolock)
group by prodid
)

Select
BrigadeId as "Участок"
--,p.Площадка
,pr.itemid as "НН"
,name as "Наименование"
,qtysched as "Кол-во"
,SourceTransRefId_OVK as "Номер КП"
,SourceAccountName_OVK as "Клиент"
,pr.PRODID as "ПР"
,SchedEnd as "Плановая дата сдачи"
,DlvDate as "Требуемая дата сдачи"
,id.CONFIGID as "Конфигурация"
--,n.PROCESSTIME as "Нормы"
,n.PROCESSTIME*qtysched as "Нормы"
--,sch.Status as "Статус"
,case when Status = 2 then 'Утверждено аналитиком'
when Status in (8, 4)  then 'В производстве'
when Status = 1 then 'Создано'
--when Status = 20 then 'Принято складом'
--when Status = 12 then 'Сдача на склад'
--when Status = 25 then 'Проведено'
when Status = 100 then 'Отменено'
when Status = 0 then 'Не определено'
when Status in (9, 12, 25, 20)  then 'Завершено'
--when Status = 4 then 'Готов к про-ву'
else 'unknown' end as "Статус"


From dbo.PRODTABLE pr (nolock)
inner join dbo.inventdim id (nolock) on pr.INVENTDIMID = id.INVENTDIMID
left join norms n on pr.prodid= n.PRODID
inner join dbo.PRODSCHEDULEJOBLINE_OVK sch (nolock) on pr.prodid = sch.PRODID
where
(SchedEnd between @startdate and @finishdate
--or SchedEnd between '05/09/2022' and '09/09/2022'
--or SchedEnd between '12/09/2022' and '16/09/2022'
--or SchedEnd between '19/09/2022' and '23/09/2022'
)
and ProdStatus <> 200
and pr.prodid not like '%-%'
and BRIGADEID not in ('1','1.1Б', '1Р','9.1', '9.3', '8.1Б', '6.2')

union

Select
BrigadeId as "Участок"
--,p.Площадка
,pr.itemid as "НН"
,name as "Наименование"
,qtysched as "Кол-во"
,SourceTransRefId_OVK as "Номер КП"
,SourceAccountName_OVK as "Клиент"
,pr.PRODID as "ПР"
,SchedEnd as "Плановая дата сдачи"
,DlvDate as "Требуемая дата сдачи"
,id.CONFIGID as "Конфигурация"
--,n.PROCESSTIME as "Нормы"
,n.PROCESSTIME*qtysched as "Нормы"
--,sch.Status as "Статус"
,case when Status = 2 then 'Утверждено аналитиком'
when Status in (8, 4)  then 'В производстве'
when Status = 1 then 'Создано'
--when Status = 20 then 'Принято складом'
--when Status = 12 then 'Сдача на склад'
--when Status = 25 then 'Проведено'
when Status = 100 then 'Отменено'
when Status = 0 then 'Не определено'
when Status in (9, 12, 25, 20)  then 'Завершено'
--when Status = 4 then 'Готов к про-ву'
else 'unknown' end as "Статус"

From dbo.PRODTABLE pr (nolock)
inner join dbo.inventdim id (nolock) on pr.INVENTDIMID = id.INVENTDIMID
left join norms n on pr.prodid= n.PRODID
inner join dbo.PRODSCHEDULEJOBLINE_OVK sch (nolock) on pr.prodid = sch.PRODID
where
(SchedEnd between @startdate and @finishdate
--or SchedEnd between '05/09/2022' and '09/09/2022'
--or SchedEnd between '12/09/2022' and '16/09/2022'
--or SchedEnd between '19/09/2022' and '23/09/2022'
)
and ProdStatus <> 200
--and prodid not like '%-%'
and BRIGADEID in ('9.1','9.3')

order by 1, 2
 
Анастасия Крючкова, нужно менять текст запроса примерно так:
Код
Sub ChangeConn()    
    Dim ws As Worksheet
    Dim strQuery As String
    Dim st As Date, fn As Date
    
    Set ws = ThisWorkbook.Sheets("параметры")
    
    st = ws.Range("B2").Value
    fn = ws.Range("C2").Value
    SecondPart = ws.Range("A2").Value
    
    strQuery = "Declare @startdate date, @finishdate date " & _
                "Set @startdate = '" & Format(CDate(st), "dd\/mm\/yyyy") & "' " & _
                "Set @finishdate = '" & Format(fn, "dd\/mm\/yyyy") & "'; " & _
                SecondPart
    
    ws.Range("A5") = strQuery
    
End Sub
В ячейке "А1" вторая (неизменяемая) часть запроса, которая начинается с CTE. strQuery - это результат, которым вам нужно заменить текст текущего запроса.

upd: немного облагородил, сделал дату с косой чертой, как у вас в запросе + приложил файл.
Изменено: Ungrateful - 20.09.2022 00:11:41
 
Большое спасибо!
Всё получилось!
Страницы: Пред. 1 2
Наверх