Newsgroup: it.comp.appl.access
Titolo: [Repost] Query a campi incrociati in A97

Ripropongo il messaggio di qualche giorno fa, cercando di chiarire
meglio il problema 
In Access 97 SR2  devo realizzare una form di tipo "Maschere continue"
basata su una query a campi incrociati.
I dati elaborati dalla query sono movimenti magazzino di articoli; i
campi su cui vengono effettuati i raggruppamenti sono: codice
magazzino (intestaz. riga) e categoria merce (intestaz. colonna); i
magazzini sono in numero fisso e predeterminato e ognuno di essi
movimenta merce tutti i giorni, per cui il numero di righe restituito
dalla query č fisso, mentre le categorie merce sono variabili sia
perchč nel tempo possono essere gestite categorie merce differenti,
sia perchč articoli di determinate categorie possono essere o non
essere movimentati nel periodo preso in esame dalla query.
Per esempio, pensate a movimenti relativi a prodotti alimentari: una 
query fatta sui movimenti del periodo natalizio conterrŕ la colonna
della categoria in cui ricadono panettoni, pandori e simili, mentre
tale colonna non sarŕ presente se la query viene eseguita sul periodo
estivo.
Le categorie merce sono codificate su di una tabella separata, in
relazione 1->n con la tabella movimenti.
I problemi che ho sono due:
1) restituire, per ogni coppia riga/colonna, due valori (quantitŕ e
prezzo) . Poichč Access 97 non lo permette, ho bisogno di trovare un
artificio, ma per ora non ho avuto idee valide.
2) gestire l'associazione dei campi della query ai controlli della
maschera, in modo che ad ogni colonna della maschera
venga associata, sempre e comunque, la colonna corrispondente ad un
determinato valore restituito dalla query anche quando tale valore non
č presente.
Non posso scambiare righe e colonne, perchč il cliente l'ha
escluso categoricamente.
Un esempio:
se la query relativa ad un certo periodo restituisce una griglia fatta
cosě
	Vini	Biscotti	Pandori	Surgel.	Latticini
Mag1	1			5
Mag2	5		2		8
Mag3		3		3	6
Mag4			4	1	
la maschera deve apparire cosě 
	Vini	Biscotti	Pandori	Surgel.	Latticini
Mag1	1			5
Mag2	5		2		8
Mag3		3		3	6
Mag4			4	1	
Se invece la query relativa ad un periodo differente restituisce una
griglia dove, rispetto all'esecuzione precedente, manca la colonna
"Pandori" perchč in quel periodo gli articoli di tale categoria non
sono stati movimentati
	Vini	Biscotti	Surgel.	Latticini
Mag1	1			11
Mag2		4		
Mag3	2	3	3	
Mag4			1	9
la maschera deve apparire cosě:
	Vini	Biscotti	Pandori	Surgel.	Latticini
Mag1	1				11
Mag2		4			
Mag3	2	3		3	
Mag4				1	9
ovvero con la colonna "Pandori" presente, ma non valorizzata.
Grazie in anticipo
Vincenzo Turturro
---------------------------------------------------------
Se no diventiamo tutti **** dai portatili o peggio ancora 
provetti poeti fiorentini come vturturro.
(Cosě disse 
ivan....@tiscalinet.it
 Ven 25 Aug 2000 09:34:52 +0200)

 Vincenzo Turturro
Sicuramente la soluzione che ti sottopongo non è elegante e non è realizzata
con una query a campi incrociati; presuppone però che tu conosca a priori
quante e quali siano le categorie dei prodotti.
Supponiamo che le categorie siano 10, mi creerei una query con 10 coppie di
campi calcolati (un campo per la quantità ed uno per il valore); riempirei,
usando la funzione IIF basata sulla categoria, la corrisdpondente coppia di
campi.
A questo punto, per ottenere ciò che ti serve, è sufficiente raggruppare la
query per periodo e magazzino; sommando anche i campi Quantità e Valore,
otterrai anche i totali di riga.
Se ti servono anche i totali di colonna al livello di periodo, puoi crearti
una seconda query raggruppata per periodo e poi la fondi con la precedente
in una query unione.
Certo è che , ogni volta che ti nasce una nuova categoria di prodotto, devi
modificarti le query e questo diventa sicuramente un problema nel caso in
cui si movimenti molto la tabella categorie.
La mia fantasia non riesce a partorire altro.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/
---------------------------------------------

cui si movimenti molto la tabella categorie.
Già, il problema è proprio qui.
Vedrò di utilizzare il tuo suggerimento come spunto.
Grazie
Vincenzo Turturro
---------------------------------------------------------
Se no diventiamo tutti **** dai portatili o peggio ancora 
provetti poeti fiorentini come vturturro.
(Così disse 
ivan....@tiscalinet.it
 Ven 25 Aug 2000 09:34:52 +0200)

 (Così disse 
ivan....@tiscalinet.it
 Ven 25 Aug 2000 09:34:52 +0200)
Estrarre frasi da un contesto complesso non e' che sia il massimo. ;=))
Al tempo ero abbastanza d'accordo con Ivan. ;=)))
-- 
Alessandro Cara

Alessandro Cara
Vincenzo Turturro


è presente.
Tempo fa ho avuto a che fare con un prb simile.
Ho risolto con una tab temporanea su cui appoggiare il
report (o la form) popolata via codice dal risultato della
query.
In pratica nella tab ho tutti i campi che servono, per cui
la form viene sempre uguale.
Non dovrebbe essere troppo difficile costruire la tabella
dinamicamente sulla base delle categorie, e anche per il
popolamento dovrebbe bastare ciclare sui campi...
Non so se si e' capito...
--
Lorenzo Coronati
--
<<P.S. Mi scuso con il NG per la polemica, ma proprio 
non digerisco questo atteggiamento da professorini di 
provincia, che alternano risposte saccenti date con 
sufficienza a prese in giro da terza elementare.>>
(Giovanni D'Orazio, 1/11/2000)
--

(.....)
Vincenzo Turturro
---------------------------------------------------------
Se no diventiamo tutti **** dai portatili o peggio ancora 
provetti poeti fiorentini come vturturro.
(Così disse 
ivan....@tiscalinet.it
 Ven 25 Aug 2000 09:34:52 +0200)

 restituite di volta in volta dalla query.
non ho mai provato, ma credo si possa.
metti due pulsanti sulla form (Avanti-Indietro);
a seconda del pulsante premuto, modifichi le origini dei controlli (colonne)
facendo in modo che le colonne si spostino a dx o a sx di un certo delta,
ovvero visualizzi solo n colonne alla volta.
probabilmente e' un lavoraccio, ma se assegni dei non non significativi ai
controlli (es. col01) e per i nomi dei campi lavori con gli oggetti field,
forse si riduce a poche righe di codice.
ti ripeto, non ho provato, quindi spero di non aver detto delle cacchiate.
per quanto riguarda l'altro problema, ovvero la visualizzazione di tutte le
colonne nella query a campi incrociati anche se non contengono dati (senza
buchi), potresti utilizzare IN nella istruzione PIVOT della query
TRANSFORM
....
PIVOT TipoProdotto In ("prodotto1","prodotto2","prodotto3","...")
che corrisponde a definire prop. Columnheading nella finestra delle proprieta'
del campo TipoProdotto.
Il problema sta nel fatto che se aggiungi un prodotto devi modificare la query,
e non mi piace.
In alternativa potresti crearti a runtime la query a campi incrociati, prima di
visualizzare la form; in questo modo puoi reperire tutte le categorie.
Spero di essere stato chiaro, ma non credo :-)
Fammi sapere
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------

Il fatto che tutto mi sembri chiaro alla prima lettura (anche se
abbastanza ostico da realizzare) mi preoccupa !
Probabilmente non ho capito proprio niente !
Proverň nel fine settimana.
Mi piace soprattutto l'idea di far "scorrere" l'origine dati sotto le
colonne.
Grazie.


nuova categoria hai una colonna in più ! E dove la metti nella form ?
Alternativa a cio' che ti suggerisce Fede:
maschere continue significa (immagino) solo una label e una
textbox per ogni campo, no?
Createcontrol non e' poi cosi' ostico.
Del resto, se vuoi fare le cose in un certo modo... ;-)
