Newsgroup: it.comp.appl.access
Titolo: Maschera con Query a campi incrociati

Ciao a tutti.
mi si pone il seguente problema:
ho una tabella con una lista di prodotti e vorrei esplodere una
maschera per consentire l'immissione / variazione di quantitativi
divisi settimana x settimana esempio,
prodotto    W1    W2    W3   W4   W5 ......................
abc             1       0       5      5       4
.......................
def              7       15     20    15     14 ......................
e via così.
la tabella è così fatta:
Articolo
Anno
Nr. Settimana
Io vorrei però esplodere la maschera reperendo i dati già persenti in
tabella, ma anche proponendo le settimane eventualmente senza numeri in
modo da poterle inputare.
Idee ?  io avevo pensato alla query a campi incrociati, ma mi riporta
solo i mesi presenti in tabella.
E' forse meglio ricorrere all'ogggetto "grid control" ? e se si mi
potete dare 2 dritte? Grazie 1.000

potete dare 2 dritte? Grazie 1.000
Mi dispiace ma io non uso oggetti grid control, quindi non sono in grado di 
ragguagliarti in merito.
-- 
Roberto
-----------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
-----------------------------------------------

Roberto dal portatile ha scritto:

Grazie Roberto, sei stato veramente chiaro. Ora spero di riuscire a
passare dalla teoria alla pratica con la stessa facilità con cui ho
capito i tuoi consigli. Ciao e a buon rendere.

mb220868 ha scritto:

Eccomi ancora qua. avevo già scaricato il tuo programma da sito comune
ed era proprio da lì che stavo partendo.
Parliamo di questo programma almeno parliamo della stessa lingua.
come faresti a far visualizzare tutte le date del periodo selezionato
anche se non presenti nel DB ? mi hai scritto di guardare l'help a
proposito di proprietà intestazione colonne, ma non ne vengo fuori. mi
dai ancora un aiutino ?

dai ancora un aiutino ?
Al fine di non creare equivoci il database allegato alla mia FAQ 3.110 
mostra come gestire dinamicamente una maschera continua basata su una query 
a campi incrociati i cui campi possono mutare sia nel nome che nel numero, 
ma in tale database NON è affatto mostrato come bloccare il numero delle 
colonne della query a campi incrociati usando la proprietà Intestazione 
colonne, infatti la query a campi incrociati Query_Campi_incrociati 
contenuta nel database non utilizza tale proprietà ed è per questo che ti 
avevo suggerito di leggere a tale scopo quanto scritto sull'help e che per 
aiutarti tracrivo qui di seguito:
========================
Proprietà IntestazioniColonne (italiano)
Proprietà ColumnHeadings (inglese)
È possibile utilizzare la proprietà ColumnHeadings per specificare l'ordine 
o per limitare il numero di colonne visualizzate in una query a campi 
incrociati. È possibile che si desideri, ad esempio, visualizzare in un 
determinato ordine i nomi di paesi contenuti in una query, mettendo Stati 
Uniti al primo posto, Canada al secondo e Regno Unito al terzo.
Impostazione
Immettere i valori dei dati del campo Intestazione colonna della query a 
campi incrociati come un'espressione stringa nell'ordine in cui si desidera 
visualizzare le intestazioni nel foglio dati per la query a campi incrociati 
e separarli con una virgola o con il separatore di elenco impostato nella 
finestra di dialogo Proprietà - Impostazioni internazionali del Pannello di 
controllo di Windows. La tabella riportata di seguito mostra impostazioni di 
esempio della proprietà ColumnHeadings e il risultato nel foglio dati della 
query a campi incrociati.
Impostazione di esempio                         Risultato
------------------------------------------------------------------------
"Trim 1", " Trim 2", " Trim 3", " Trim 4"     Visualizza intestazioni 
colonna per ciascun trimestre.
"Messico", "Canada", "Stati Uniti"            Visualizza intestazioni 
colonna per ciascun paese.
È possibile impostare tale proprietà utilizzando la finestra delle proprietà 
della query. È inoltre possibile impostare la proprietà in visualizzazione 
SQL della finestra di query o in Visual Basic utilizzando una proposizione 
PIVOT nell'istruzione SQL.
Nota   Le intestazioni colonna specificate per la proprietà ColumnHeadings 
devono corrispondere esattamente ai valori dei dati contenuti nel campo 
Intestazione colonna della griglia di struttura di query. In caso contrario, 
i dati non compariranno nelle colonne.
Osservazioni
Utilizzare la proprietà ColumnHeadings per ottenere un controllo maggiore 
sul modo in cui vengono visualizzate le intestazioni colonna in una query a 
campi incrociati. In base all'impostazione predefinita Microsoft Access 
visualizza tutti i valori dei dati come intestazioni colonna in ordine 
crescente. Se, ad esempio, il nome del campo Intestazione colonna è Mese, le 
intestazioni colonna predefinite visualizzate sono aprile, agosto, dicembre, 
febbraio e così via. È possibile utilizzare la proprietà ColumnHeadings per 
visualizzare i dati nell'ordine corretto con l'impostazione appropriata: 
"gennaio", "febbraio", "marzo" e così via.
Se un'intestazione colonna viene inclusa nell'impostazione della proprietà 
ColumnHeadings, la colonna viene sempre visualizzata in visualizzazione 
Foglio dati della query, anche se la colonna non contiene dati. Ciò risulta 
utile per un report basato su una query a campi incrociati, ad esempio, 
quando si desidera che nel report vengano sempre visualizzate le stesse 
intestazioni colonna.
Suggerimento   È possibile utilizzare la proprietà ColumnHeadings per 
aumentare la velocità di alcune query a campi incrociati limitando il numero 
delle colonne visualizzate.
===============================
Comunque se, oltre all'esempio che trovi sull'help, vuoi vedere come sarebbe 
modificata la query a campi incrociati della mia FAQ in caso che usasse la 
proprietà Intestazione colonne, eccoti accontentato.
Attualmente il codice SQL della query senza le intestazione colonne è la 
seguente:
PARAMETERS [Forms]![MascheraParametri]![Anno] Short, 
[Forms]![MascheraParametri]![Mese] Short;
TRANSFORM IIf(Count(Tabella1.ID)>0,"X",Null) AS [Il valore]
SELECT Tabella1.Dipendente
FROM Tabella1
WHERE (((Year([DataPresenza]))=[Forms]![MascheraParametri]![Anno]) AND 
((Month([DataPresenza]))=[Forms]![MascheraParametri]![Mese]))
GROUP BY Tabella1.Dipendente
PIVOT Format([DataPresenza],"Short Date");
S invece volessi che la query contenessa SOLO le colonne intestate 
01/02/2004 e 10/02/2004 a prescindere che tali date fossero contenute nei 
record della Tabella1, il codice SQL della query a campi incrociati dovrebbe 
essere:
PARAMETERS [Forms]![MascheraParametri]![Anno] Short, 
[Forms]![MascheraParametri]![Mese] Short;
TRANSFORM IIf(Count(Tabella1.ID)>0,"X",Null) AS [Il valore]
SELECT Tabella1.Dipendente
FROM Tabella1
WHERE (((Year([DataPresenza]))=[Forms]![MascheraParametri]![Anno]) AND 
((Month([DataPresenza]))=[Forms]![MascheraParametri]![Mese]))
GROUP BY Tabella1.Dipendente
PIVOT Format([DataPresenza],"Short Date") In ("01/02/2004","10/02/2004");
Come vedi l'intervento sul codice SQL andrebbe effettuato nella proposizione 
PIVOT, mentre se usi la griglia di struttura dovresti scrivere quelle due 
date, chiuse tra virgolette e scandite da un punto e virgola, nella 
proprietà Intestazione colonne.




wwwwwwwwooooooooooooooowwwwwwwwwwwww !!!!!!!!!!!!!!!!!1
....... to the face of the ........ grandissimo ! grazie 1.000
spiegazione esaustiva al 1000 %. scusami ma l'help
non lo avevo proprio visto.
Ancora grazie.