Newsgroup: it.comp.appl.access
Titolo: Trasposizione

Da una tabella 6 Righe x 10 Colonne ottenere la trasposizione
10 x 6 (solo dati, no intestazione campi).
 
Qualcuno sa costruirne la query?
 
Bruno


Devi fare perforza una Query...?
 
Se devi popolare una Maschera si può fare con un Recordset ADO in memoria, cicli il RS(Query) lo trasponi nel RS(ADO), poi lo assegni alla Maschera.
 
@Alex

 cicli il RS(Query) lo trasponi nel RS(ADO), poi lo assegni alla Maschera.
 
Lo so fare in VBA con RS DAO.
Se ne hai uno funzionante in VBA ADO vorrei vederlo.
 
Bruno


Non puoi farlo con DAO in quanto per farlo serve una Tabella di Appoggio...
Con ADO invece puoi costruire una Tabella in memoria, o meglio definire in memoria il numero di Campi ed il Tipo... in questo modo usi il Recordset pulito.
 
La cosa è abbastanza semplice, ma non ho molto tempo per scrivere esempi, quindi ti mostro un esempio di Giorgio Rancati:
http://www.riolab.org/index.php?option=com_content&view=article&id=135:recordset-non-associati&catid=46:access&Itemid=69
 
 
Tu lo costruisci in una Funzione in base al numero di Campi che ti servono, poi lo popoli... è veramente banale.
 
Una query può essere solo una CROSS_QUERY... ma ha dei problemi in caso di non omogeneità dei dati... insomma dipende da cosa devi fare.
 
@Alex

 non omogeneità dei dati... insomma dipende da cosa devi fare.
Per quel che ne so io di CrossTab query, direi che proprio
non ce la fanno, non nel caso che ho prospettato.
Per il quale caso vorrei precisare che data una tabella
TAB, eseguendo la trasposizione ottengo TAB_Trp ed eseguendo
la trasposizione su TAB_Trp riottengo TAB... e così via.
 
Bruno

Bruno se hai una tabella che rispecchia la trasposizione non credo valga la pena complicarsi la vita...
 
In ogni caso ADO fa esattamente la stessa cosa consentendoti di farlo RUNTIME senza la necessità della tabella fisica ma il processo è perfettamente sovrapponibile.
 
Buona Notte allora.
 
@Alex 

P.s. tabella di appoggio, è quello che hai fatto tu... chiamala di Servizio o di Bruno... quello è il senso... ed ovviamente in quel caso non serve inventare acqua calda... DAO chiaramente sulla tabella "DiBruno".
 
L'uso di ADO non associati... è una tecnica molto flessibile e programmabile senza toccare tabelle.
 
Pensaci.
@Alex

 Pensaci.
 
Invece con quel che dici ADO non tocca tabelle?
si tiene i dati in memoria... e quando spegne il PC?
 
Io credo che tu proprio non abbia un'idea di come si svolge
programmaticamente il processo di trasposizione... altrimenti
non avresti tirato fuori le CrossTab Query che assomigliano
alla trasposizione come io assomiglio a Marilyn Monroe.
 
La trasposizione in Excel (lì inutile perché c'è built-in
la funzione Transpose) si fa con 5 righe di codice,
in Access con meno di 10 (oltre a qualche Dim e Set).
Penso che a te occorrerà un quaderno di prima elementare
per scriverne almeno una... o sbaglio?
 
Bruno

In realtà hai ragione per la crosstab, el seno che io intendevo PIVOT Table, chiedo scusa per il grave errore
 
https://www.sqlshack.com/multiple-options-to-transposing-rows-into-columns/
 
 
Ci sono però anche altre opzioni che pur con limiti... realizzano la trasposizione in vari modi:
 
https://stackoverflow.com/questions/21650253/crosstab-or-transpose-query
 
 
Questa ad esempio usa proprio una CROSSTAB finale:
 
https://www.pcreview.co.uk/threads/can-you-transpose-the-columns-and-rows-in-a-query-result.1181662/
 
 
 
Anche POWER QUERY ad esempio... nuovo strumento che forse dovrebbe essere implementato se non ricordo male in A2019.
 
Insomma Bruno senza voler fare il sapiente che non hai motivo di fare, almeno con me, in rete ci sono molti esempi più o meno utili ma da tutti c'è da imparare... prova a studiare quello che ti soddisfa.
 
@Alex

@Alex wrote on 06-05-19 :

Solo per dire che se c'è uno che sprizza saccenteria da tutti
i pori sei proprio tu e non io.
 
Bruno

Espongo quello che so... ma non potrei mai insegnare a te... Maestro.
 
Però puoi imparare cercando bene e studiando meglio nel web.
 
@Alex