2 messaggi dal 23 luglio 2012
Ho un database, costruito con Access, nel quale ci sono varie tabelle, suddivise per anno.
Nella richiesta: sql = "SELECT * FROM miaTabella ORDER BY Cognome ASC" vorrei che miaTabella fosse una variabile che identifica l'anno.
Esempio:
ho un database contenente varie tabelle: annoSp2022, annoSp2023, ecc.
vorrei assegnare una variabile all'anno di riferimento, tipo anno_sportivo=annoSp2022 e nella query sql vorrei fare
sql = "SELECT * FROM anno_sportivo ORDER BY Cognome ASC"

Ovviamente mi da errore perchè non esiste la tabella anno_sportivo, bensì la variabile anno_sportivo che contiene l'anno richiesto. Come far sì che FROM legga il valore contenuto nella variabile anno_sportivo.

Spero non sia troppo confuso, chiedo venia.
Qualcuno mi potrebbe aiutare? Grazie mille.
1.976 messaggi dal 27 luglio 2005
Contributi
salve ziosamuele,

sei in un forum per SQL Server e non quello di Access. Il linguaggio SQL utilizzato NON e' proprio il medesimo, ma cio' non toglie che non e' possibile in alcun dialetto SQL utilizzare delle variabili al posto dei "nomi".

In SQL Server, e' possibile bypassare questo limite eseguendo un "comando dinamico", utilizzando
DECLARE @cmd nvarchar(8000):
SET @cmd = 'SELECT x. y, z FROM ' + valoreVariabileStringa + ' WHERE x = ' + @valoreFiltroDinamicoStringa + ' ORDER BY ' + @valoreOrdinamento;

(vedi https://learn.microsoft.com/it-it/sql/t-sql/language-elements/execute-transact-sql?view=sql-server-ver16)
EXEC (@cmd);

oppure (vedi https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-executesql-transact-sql?view=sql-server-ver16)
EXEC sp_executesql @cmd; -- che accetta ulteriori funzionalita'...

cio' non toglie che questa funzionalita' e' da utilizzare "cum granu salis" e come "extrema (molto extrema) ratio"...

salutoni romagnoli
--
Andrea

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
308 messaggi dal 13 luglio 2005
Ciao ziosamuele,
io uso un metodo molto "casalingo" che può far arricciare il naso ai puristi del codice ... ;-)
Tu, immagino, prima di connetterti al DB definisci la query che utilizzerai, ovvero (come ho visto nel tuo esempio):

sql = "SELECT * FROM annoSp2022 ORDER BY Cognome ASC"

Bene ... Se vuoi che la tabella da interrogare sia variabile a seconda dell'anno che ti interessa, può scrivere:

anno_sportivo = "annoSp2022"
sql = "SELECT * FROM " + anno_sportivo + " ORDER BY Cognome ASC"

cioè la variabile (di tipo stringa) la definisci in asp e non in SQL e poi la concateni con la stringa della query che manderai al recordset.

Spero di essere stato chiaro.

Fammi sapere. Ciao.

Umb
2 messaggi dal 23 luglio 2012
Grazie mille, gentilissimo.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.