Как использовать значение ячейки Excel в качестве переменной в операторе SELECT в Power Query? - PullRequest
1 голос
/ 27 февраля 2020

Я получаю некоторые данные с сервера SQL, и поэтому я хотел бы получить данные только после определенной даты. Дата хранится в ячейке книги Excel. Вот как выглядит код:

let
Source = Sql.Database(SERVER, DATABASE, [Query="select  
PET.TransDate, PET.ProjId, DirParty.name, PET.EmplId, sum(PET.Qty) as TOTH from ProjEmplTrans as PET#(lf)  
inner join emplTable as EMP on EMP .EmplId = PET.EmplId#(lf)  
inner join dirpartyTable as DirParty on DirParty.PartyId = EMP .PartyId#(lf)  
inner join  projTable as Proj on Proj.ProjId = PET.ProjId#(lf) 
where PET.TransDate < '01.01.2020' and proj.cnlActive=1
group by PET.ProjId, PET.EmplId#(lf), DirParty.name, PET.TransDate"])
in
Source

Пока в коде жестко указана дата, но я хочу получить ее из ячейки Excel.

Я пытаюсь это сделать:

Excel.CurrentWorkbook(){[Name="Start_date"]}[Content]{0}[Column1]

Где 'start_date' - это именованная ячейка, где находится дата

Это ошибка, которую я получаю:

let
    Source = Sql.Database(SERVER, DATABASE, [Query="select  
    PET.TransDate, PET.ProjId, DirParty.name, PET.EmplId, sum(PET.Qty) as TOTH from ProjEmplTrans as PET#(lf)  
    inner join emplTable as EMP on EMP .EmplId = PET.EmplId#(lf)  
    inner join dirpartyTable as DirParty on DirParty.PartyId = EMP .PartyId#(lf)  
    inner join  projTable as Proj on Proj.ProjId = PET.ProjId#(lf) 
    where PET.TransDate < Excel.CurrentWorkbook(){[Name="Start_date"]}[Content]{0}[Column1] and proj.cnlActive=1
    group by PET.ProjId, PET.EmplId#(lf), DirParty.name, PET.TransDate"])
in
Source

Ожидается Token Comma.

Я понятия не имею, если это способ сделать это.

Может кто-нибудь помочь?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Это почти сработало, и вот как мне удается заставить его работать:

Source = Sql.Database(server, database, [Query="select  
 ...
    where PET.TransDate < ' " & Excel.CurrentWorkbook(){[Name="Start_date"]}[Content]{0}[Column1] & " ' and proj.cnlActive=1
    group by PET.ProjId, PET.EmplId#(lf), DirParty.name, PET.TransDate"])
in
Source

Я добавляю 'до и после вызова ячейки, и это нормально

Спасибо вы

0 голосов
/ 27 февраля 2020

Если вы хотите объединить эту функцию с вашим запросом, вам нужно сделать это следующим образом:

    Source = Sql.Database(server, database, [Query="select  
 ...
    where PET.TransDate < " & Excel.CurrentWorkbook(){[Name="Start_date"]}[Content]{0}[Column1] & " and proj.cnlActive=1
    group by PET.ProjId, PET.EmplId#(lf), DirParty.name, PET.TransDate"])
in
Source
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...