Newsgroup: it.comp.appl.access
Titolo: Query a campi incrociati: Stampa report "variabile".

Salve a tutti,
ho una query a campi incrociati in cui a priori non so di volta in volta
quante colonne posso avere.(non mi interessa la larghezza dato che se anche
fossero rappresentate tutte le colonne comunque rientrerebbero nei margini
del report)
Ho la necessità di creare un report "tabellare" collegato a questa query
senza "fissare" i controlli e relative etichette.
Ho trovato diverse faq sull'argomento sul sito comune.
Quella che fa al caso mio è la faq 4.31 di Roberto.
Il problema è che non essendo parametrica non riesco a personalizzare il
codice del report alle mie necessità.
In sostanza il mio report deve mostrare colonne e etichette della query a
campi incrociati, senza condizioni.
Se ho 3 colonne nella query: nel report = 3 colonne.
Se ho 8 colonne nella query: nel report = 8 colonne.
Grazie Luca.

 ha scritto nel messaggio
news:b3wdh.13497$P04....@tornado.fastwebnet.it...

Questo è il codice:
Option Compare Database
Option Explicit
Private Sub Report_Close()
DoCmd.Restore
End Sub
Private Sub Report_Open(Cancel As Integer)
DoCmd.Maximize
Me.RecordSource = "Query_Campi_Incrociati"
Dim qdf As DAO.QueryDef
Dim fld As DAO.Field
Dim rst As DAO.Recordset
Dim Conta As Integer
Set qdf = CurrentDb().QueryDefs("Query_Campi_Incrociati")
qdf.Parameters![Forms!MascheraParametri!Anno] = Forms!MascheraParametri!Anno
qdf.Parameters![Forms!MascheraParametri!Mese] = Forms!MascheraParametri!Mese
Questi parametri a me non interessano
Set rst = qdf.OpenRecordset
Conta = 1
For Each fld In rst.Fields
    Me("Etichetta" & Trim(Conta)).Caption = fld.Name
    Me("Etichetta" & Trim(Conta)).Visible = True
    Me("Controllo" & Trim(Conta)).ControlSource = fld.Name
    Me("Controllo" & Trim(Conta)).Visible = True
    Conta = Conta + 1
Next
Set rst = Nothing
Set qdf = Nothing
Set fld = Nothing
End Sub

 ha scritto nel messaggio 
news:b3wdh.13497$P04....@tornado.fastwebnet.it...

La dinamicità è data dall'origine dati (dal numero dei campi della query) 
del report; come scrive Roberto:
...
Come ben si sa non si ha mai la certezza del nome dei campi di una query a 
campi incrociati parametrica a meno che non si imposti adeguatamente la sua 
proprietà Intestazione colonne attraverso la quale, appunto, si 
predefiniscono e si preintestano i campi della query a campi incrociati; 
questa imponderabilità fa sì che la creazione di un report basato su una 
query a campi incrociati dovrebbe essere fatta solamente dopo l'esecuzione 
della query, quando sono ormai noti tutti i nomi delle colonne della query 
stessa.
...
Le caselle di testo e le etichette saranno definite tutte non visibili e si 
renderanno visibili mano a mano che verranno personalizzate con il nome di 
un campo della query, così che alla fine nel report verranno visualizzati 
solo i controlli necessari e non tutti quelli inseriti nel report che 
dovrebbero essere invece tanti quanto il numero massimo dei campi previsti 
nella query a campi incrociati parametrica.
...
Quindi devi definire il numero massimo di caselle di testo da visualizzare 
nel report; chiaramente il report ha dimensioni finite (dipendenti dal 
formato della carta)...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio
news:el68vm$jdf$1...@tdi.cu.mi.it...

Capisco, devo in pratica mettere tante etichette e controlli quante sono le
potenziali colonne della query.
Perfetto.
Grazie Luca.