Discussione:
Creare Report attraverso VBA
(troppo vecchio per rispondere)
SergioBS
2007-05-24 18:39:11 UTC
Permalink
Salve.. mi chiedevo come popolare un Report attraverso una query in VBA..

fose mi sto perdendo in un bicchier d'acqua.. ma tant'è..

cerco di spiegarmi.. con parole mie. :-(

Procedura "normale"
Si crea una tabella
Si crea una query
Si crea un Report e si collega ad una query

ma se io la query la creo in VBA..

ad esempio questa

Dim QSDA As ADODB.Recordset
Set QSDA = New ADODB.Recordset
SQL = "SELECT * FROM LDVLS WHERE ((Esportata=FALSE) and
(Stampata=TRUE))"
QSDA.Open SQL, CurrentProject.Connection, 3, 3

Come posso fare a popolare un certo Report con questa query?

Spero di essere stato chiaro

Grazie

SergioBS
PBsoft
2007-05-24 19:40:00 UTC
Permalink
Post by SergioBS
Dim QSDA As ADODB.Recordset
Set QSDA = New ADODB.Recordset
SQL = "SELECT * FROM LDVLS WHERE ((Esportata=FALSE) and
(Stampata=TRUE))"
QSDA.Open SQL, CurrentProject.Connection, 3, 3
Come posso fare a popolare un certo Report con questa query?
La stessa stringa di codice SQL può essere assegnata alla proprietà RecordSource
dell'oggetto Report.

--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution
SergioBS
2007-05-25 07:47:57 UTC
Permalink
Post by PBsoft
Post by SergioBS
Dim QSDA As ADODB.Recordset
Set QSDA = New ADODB.Recordset
SQL = "SELECT * FROM LDVLS WHERE ((Esportata=FALSE) and
(Stampata=TRUE))"
QSDA.Open SQL, CurrentProject.Connection, 3, 3
Come posso fare a popolare un certo Report con questa query?
La stessa stringa di codice SQL può essere assegnata alla proprietà
RecordSource dell'oggetto Report.
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution
Grazie Gabriele... ma allora la domanda successiva è.. come gestire i report
da VBA?

io finora ho utilizzato qualcosa di simile a :

stDocName = "rLDVL"
DoCmd.OpenReport stDocName, acNormal

immagino che non basti assegnare a stDocName il valore QSDA (ovvero il Rs)

Grazie

SergioBS
PBsoft
2007-05-25 19:02:40 UTC
Permalink
Post by SergioBS
Grazie Gabriele... ma allora la domanda successiva è.. come gestire i
report da VBA?
Devi utilizzare un tuo oggetto di tipo Access.Report.
Lo fai puntare al report desiderato.
Gli modifichi la proprietà RecordSource.
Lo apri.
Post by SergioBS
stDocName = "rLDVL"
DoCmd.OpenReport stDocName, acNormal
immagino che non basti assegnare a stDocName il valore QSDA (ovvero il Rs)
Questo è il normale codice da utilizzare per aprire un report.

--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution
SergioBS
2007-05-25 20:12:14 UTC
Permalink
Post by PBsoft
Post by SergioBS
Grazie Gabriele... ma allora la domanda successiva è.. come gestire i
report da VBA?
Devi utilizzare un tuo oggetto di tipo Access.Report.
Lo fai puntare al report desiderato.
Gli modifichi la proprietà RecordSource.
Lo apri.
OK ci provo.. i primi tentativi sono stati negativi.. :-(
ho visto che se non è aperto non posso modificare la proprietà
recordsource..
ma se lo apro si prende come recordsource quello di default..
ho visto che si deve modificare OnOpen.. ma non ho ancora capito come fare
di preciso..
ci devo studiare su un poco..

intanto grazie infinite per la dritta

SergioBS
PBsoft
2007-05-26 14:21:05 UTC
Permalink
Post by SergioBS
OK ci provo.. i primi tentativi sono stati negativi.. :-(
Tranquillo, è da qui che si comincia ad imparare. Hanno fatto tutti così.
Post by SergioBS
ho visto che se non è aperto non posso modificare la proprietà
recordsource..
Devi aprire il report in modalità design, quindi assegnargli il giusto RecordSource,
quindi aprirlo normalmente (senza chiuderlo prima).
Post by SergioBS
ho visto che si deve modificare OnOpen.. ma non ho ancora capito come
fare di preciso..
Non so se puoi sfruttare l'evento Report_Open; se così fosse, devi mettere
il codice che imposta il RecordSource all'interno di quell'evento.

--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution
SergioBS
2007-05-26 15:33:51 UTC
Permalink
Post by PBsoft
Devi aprire il report in modalità design, quindi assegnargli il giusto
RecordSource, quindi aprirlo normalmente (senza chiuderlo prima).
ah.. perchè io pensavo che l'operazione da VBA..
qualcosa tipo
Access.Reports!rLDVL.RecordSource = "rsSDA"
ma così non funziona appunto perchè dice che il report deve essere aperto

hmm.. ho provato come hai detto tu ma mi dice che rsSDA, ovvero il recordSet
che genero io non esiste...:-(
deve essere in qualche posizione particolare
Post by PBsoft
Post by SergioBS
ho visto che si deve modificare OnOpen.. ma non ho ancora capito come
fare di preciso..
Non so se puoi sfruttare l'evento Report_Open; se così fosse, devi mettere
il codice che imposta il RecordSource all'interno di quell'evento.
Vedo se posso usare questa soluzione.. magari in questa ipotesi la maschera
è aperta e "vede" il RS
Post by PBsoft
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution
Grazie ancora
Sergio
PBsoft
2007-06-08 09:21:19 UTC
Permalink
Post by SergioBS
hmm.. ho provato come hai detto tu ma mi dice che rsSDA, ovvero il
recordSet che genero io non esiste...:-(
deve essere in qualche posizione particolare
Il recordset non si può trovare "da qualche parte": semplicemente è una variabile
che dichiari tu nel codice VBA.
Non ho ben chiaro cosa tu voglia dire.

--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype:pbsoftsolution

Continua a leggere su narkive:
Risultati di ricerca per 'Creare Report attraverso VBA' (Domande e Risposte)
6
risposte
A cosa serve Microsoft Access ???
iniziato 2007-10-10 12:53:42 UTC
software
Loading...