29 messaggi dal 30 agosto 2018
Salve, vorrei ordinare l'output del contenuto di una colonna del mio database, ho scritto questo codice:
SELECT '"&cat&"' FROM PRODOTTI WHERE ATTIVO = TRUE ORDER BY '"&cat&"';
dove cat corrisponde al nome della colonna da estrarre (utilizzo una variabile perchè il sito è multilingue, quindi ci sono più colonne in formato cat_lingua) e PRODOTTI alla tabella del database. Ora ho controllato e ricontrollato, ho ricompilato il database a mano e fatto attenzione al nome dei campi, ma se lascio così mi da: error '800a0cc1' Item cannot be found in the collection corresponding to the requested name or ordinal. Se invece cambio la stringa sql in :
SELECT cat FROM PRODOTTI WHERE ATTIVO = TRUE ORDER BY cat;
vengono semplicemente fatti uscire dal primo all'ultimo. Come risolvo?
P.S. gli assegnamenti alla variabile cat sono giusti
Grazie.
349 messaggi dal 13 novembre 2009
Devi utilizzare un case sulla variabile perché non è possibile rendere dinamiche le colonne sull order by
29 messaggi dal 30 agosto 2018
In che senso potresti spiegarti meglio?
1.946 messaggi dal 27 luglio 2005
Contributi
salve,
@flaviovb ti ha correttamente indicato che le colonne proiettate come anche l'ordinanmento deve essere effettuato su "costanti", cioe' un nome di colonna "fisso" e non determinabile a run time, a meno che tutto questo non diventi codice SQL dinamico o caricato esternamente (ad esempio da un programma esterno) ed eseguito con il comando compilato, dove cioe'
SELECT '"&cat&"' FROM PRODOTTI WHERE ATTIVO = TRUE ORDER BY '"&cat&"';


diventi a tutti gli effetti
SELECT [categoriaX] FROM PRODOTTI WHERE ATTIVO = TRUE ORDER BY [categoriaX];

al momento dell'esecuzione...

questo tuo codice, da come scritto, direi che arrivi da un applicativo esterno che "compila il comando" in una stringa definitiva...
se esegui tale comando, quindi ad esempio
SELECT [categoriaX] FROM PRODOTTI WHERE ATTIVO = TRUE ORDER BY [categoriaX];

in una "finestra" di accesso diretto ai comandi SQL del dbms che stai usando ottieni errori?
nel tuo caso specifico, la colonna [categoriaX] esiste nella tabella indicata?

per favore, tra l'altro, indica anche che dbms tu stia usando, grazie :D
salutoni
--
Andrea
Modificato da Andrea Montanari il 23 aprile 2020 00:31 -

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
29 messaggi dal 30 agosto 2018
Ok, ho capito quindi devo trasformare categoria in costante. Solo la variabile categoria è determinata da una pagina esterna, il resto dello script è costante.
Utilizzo Access come dbms, se lo compilo sostituendo alla variabile la costante corrispondente funziona tutto perfettamente. Si, esistono più colonne che si chiamano categoria_x.
349 messaggi dal 13 novembre 2009
Direi che se usi access il mio suggerimento non è apll ok inabile. Detto questo se il tsql che generi è via codice per passarlo alla command non vedo problemi particolari

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.