Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Report da query a campi incrociati

142 views
Skip to first unread message

Tony Bragagnolo

unread,
Oct 11, 2002, 6:30:27 AM10/11/02
to
Ciao
premesso che ho già letto il sito comune e ho trovato un riferimento quello
a quello che certo, ma non mi è servito, il mio problema è questo:
ho semplicemente bisogno di creare un report su una query a campi incrociati
le cui colonne però non sono fisse ma sono dinamiche a "run-time", quindi ad
ogni esecuzione posso avere x colonne diverse visualizzate. E' possibile
generare un report del genere?
grazie

--------------------------------
Inviato via http://usenet.libero.it

Roberto da casa

unread,
Oct 11, 2002, 7:14:10 AM10/11/02
to

"Tony Bragagnolo" <cri...@inwind.it> ha scritto nel messaggio
news:80Z206Z188Z10Y1...@usenet.libero.it...

> Ciao
> premesso che ho già letto il sito comune e ho trovato un riferimento
quello
> a quello che certo, ma non mi è servito, il mio problema è questo:
> ho semplicemente bisogno di creare un report su una query a campi
incrociati
> le cui colonne però non sono fisse ma sono dinamiche a "run-time", quindi
ad
> ogni esecuzione posso avere x colonne diverse visualizzate. E' possibile
> generare un report del genere?
> grazie
>

Se la query a campi incrociati si chiama Query1.
Il tuo report deve avere Query1 come origine record.
Se il numero massimo di colonne della query è 10, nel corpo del report
inserisci 10 caselle di testo non associate chiamate Controllo1, Controllo2
... Controllo10; fai sormontare i 10 controlli da altrettante etichette
chiamate Etichetta1, Etichetta2 ... Etichetta10; dichiarati sia i 10
controlli che le 10 etichette non visibili.
A fronte dell'evento su apertura del tuo report genera il seguente codice
VBA:

Private Sub Report_Open(Cancel As Integer)
Dim rst As Recordset
Dim CMP As Field
Dim Conta As Integer
Set rst = CurrentDb.OpenRecordset("Query1")
Conta = 1
For Each CMP In rst.Fields
Me("Controllo" & Trim(Conta)).ControlSource = CMP.Name
Me("Controllo" & Trim(Conta)).Visible = True
Me("Etichetta" & Trim(Conta)).Caption = CMP.Name
Me("Etichetta" & Trim(Conta)),Visible = True
Conta = Conta + 1
Next
Set rst = Nothing
End Sub

Dovrebbe funzionare.

--
Roberto

---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Tony Bragagnolo

unread,
Oct 11, 2002, 8:55:28 AM10/11/02
to
>Il 11 Ott 2002, 13:14, "Roberto da casa" <r.ma...@libero.it> ha scritto:
>
> Se la query a campi incrociati si chiama Query1.
> Il tuo report deve avere Query1 come origine record.
> Se il numero massimo di colonne della query è 10, nel corpo del report
>.....

ok, c'è un altro problemino, cioè la query è parametrica e prende i valori
da due controlli di una form. quindi a run-time l'istruzione

Set rst = CurrentDb.OpenRecordset("query1")

genera un errore "parametri insufficienti. previsto 2", nonostante la form
sia aperta e con i valori inseriti...

Roberto da casa

unread,
Oct 11, 2002, 1:11:21 PM10/11/02
to

"Tony Bragagnolo" <cri...@inwind.it> ha scritto nel messaggio
news:80Z206Z188Z10Y1...@usenet.libero.it...
> >Il 11 Ott 2002, 13:14, "Roberto da casa" <r.ma...@libero.it> ha
scritto:
> >
> > Se la query a campi incrociati si chiama Query1.
> > Il tuo report deve avere Query1 come origine record.
> > Se il numero massimo di colonne della query è 10, nel corpo del report
> >.....
>
> ok, c'è un altro problemino, cioè la query è parametrica e prende i valori
> da due controlli di una form. quindi a run-time l'istruzione
>
> Set rst = CurrentDb.OpenRecordset("query1")
>
> genera un errore "parametri insufficienti. previsto 2", nonostante la form
> sia aperta e con i valori inseriti...
> grazie
>

Per vedere come si apre un recordset su una query parametrica, vai sul Sito
Comune (link qui sotto) e nella Sezione Queries leggi la FAQ di Federico
Luciani intitolata "Aprire una query parametrica da codice VBA".

0 new messages