Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Query SQL con parametri da cella

42 views
Skip to first unread message

Marco Porzio

unread,
Jun 14, 2022, 8:33:36 AM6/14/22
to
Ciao a tutti,
in un foglio Excel ho eseguito la connessione a una query di SQL Server per ricavare la tabella. Questa query contiene un intervallo data e ora che vorrei poter cambiare inserendo i valori nelle celle.

Questa la Query originale:
SELECT *
FROM [MioDB].[dbo].[MiaVistaSQL]
WHERE DATUM >='2022-06-13 06:00:00:00' AND DATUM <= '2022-06-14 06:00:00:00' and Prodotto= 'Principale'

Ho rinominato le celle DM1 in DataDa e DO1 in DataA poi nell'editor avanzato della query ho messo:

let
DataDa = Excel.CurrentWorkbook(){[DataDa="DataDa"]}[Content]{0}[Column2],
DataA = Excel.CurrentWorkbook(){[DataA="DataA"]}[Content]{0}[Column2],
Origine = Sql.Database("MioServer", "MioDB", [Query="SELECT * #(lf)FROM [MioDB].[dbo].[MiaVistaSQL]#(lf)WHERE DATUM >=DataDa AND DATUM <= DataA and Prodotto = 'Principale'"])
in
Origine

questo l'errore che mi rende in Editor Query:

DataSource.Error: Microsoft SQL: Invalid column name 'DataDa'.
Invalid column name 'DataA'.
Dettagli:
DataSourceKind=SQL
DataSourcePath=MioServer;MioDB
Message=Invalid column name 'DataDa'.
Invalid column name 'DataA'.
ErrorCode=-2146232060
Number=207
Class=16

come posso fare per eseguire la query basata su intervalli di data e ora?
le celle DM1 e DO1 le ho impostate come formato data personalizzata (aaaa-mm-gg hh:mm:ss)

grazie
Marco



Ammammata

unread,
Jun 14, 2022, 11:07:01 AM6/14/22
to
Il giorno Tue 14 Jun 2022 02:33:34p, *Marco Porzio* ha inviato su
microsoft.public.it.office.excel il messaggio
news:f4dc8382-2e2b-4c31...@googlegroups.com. Vediamo
cosa ha scritto:

> Ho rinominato le celle DM1 in DataDa e DO1 in DataA poi nell'editor
> avanzato della query ho messo:
>
> let
> DataDa =
> Excel.CurrentWorkbook(){[DataDa="DataDa"]}[Content]{0}[Column2], DataA
> = Excel.CurrentWorkbook(){[DataA="DataA"]}[Content]{0}[Column2],
> Origine = Sql.Database("MioServer", "MioDB", [Query="SELECT *
> #(lf)FROM [MioDB].[dbo].[MiaVistaSQL]#(lf)WHERE DATUM >=DataDa
> AND DATUM <= DataA and Prodotto = 'Principale'"])
> in
> Origine
>

io sostituirei le due variabili DataA e DataDa con il loro valore, senza
usarle nella query in modo così diretto

vediamo un po', di sicuro ci vorrà qualcosa prima del nome della variabile,
p.e. un format(DataDa, "yyyymmdd") o simile (cstr, etc), non posso provarlo
da qui

Origine = Sql.Database("MioServer", "MioDB", [Query="SELECT *
#(lf)FROM [MioDB].[dbo].[MiaVistaSQL]#(lf)WHERE DATUM >=" & DataDa &
" AND DATUM <= " & DataA & " and Prodotto = 'Principale'"])


--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
0 new messages