Newsgroup: it.comp.appl.access
Titolo: bug? stampa report da maschera invisibile

Ciao a tutti
access xp con tutti i sp
ho un report "ordinef" che viene stampato da una maschera ordini 
fornitori senza problemi.
ho scoperto questa cosa..se creo una nuova maschera..aggiungo un 
pulsante con il seguente codice:
DoCmd.OpenForm "ordinif", , , , , acHidden
Form_OrdiniF.RecordSource = "select * from ordinif where idordine=100"
DoCmd.OpenReport "ordinif"
DoCmd.Close acForm, "ordinif"
il report viene stampato senza l'intestazione (un logo e la ragione 
sociale della ditta)
lo stesso identico codice, senza acHidden mi stampa il report perfetto 
con l'intestazione.
E' un bug o mi sfugge qualche legame tra maschera e report?
ciao
BFS


Prova ad usare il parametro WHERE per imporre il Filtro [idOrdine=100]
invece che modificare il RecordSource
che oltretutto è abbastanza inutile...(perchè fai ciò...?)
Probabilmente, c'è un problema di aggionamento..., vedrai che come ti
ho suggerito non da quel problema(almeno spero...)
@Alex


ciao
non cambia nulla...la testata del report (che contiene un semplice logo 
e delle label) non appare se la form è aperta invisibile. tutto il resto 
è perfetto.
Alche il piede del report è visualizzato correttamente sia con la 
maschera visibile che non.
mistero
ciao
BFS
ps
uso Form_OrdiniF.RecordSource = "select * from ordinif where 
idordine=100" perchè il mio BE è msde e tutte le maschere vengono 
associate al solo record che devo visualizzare in fase di caricamento 
per ottimizzare il traffico dati in rete

 per ottimizzare il traffico dati in rete
L'ultima tua considerazione si basa sulla non conoscenza di come i
Filtri vengono applicati in caso di connessione a MSDE.
Usa il Query Analizer, e vedrai che impostando la proprietà Filter,
verrà eseguita ServerSide, quindi stessa condizione che applichi tu
riscrivendo il predicato SQL.
Per valutare il reale traffico di dati non puoi andare a tentono o ad
intuito, devi usare gli strumenti di Analisi, in quel modo ti rendi
conto senza
prendere abbagli di come il Motore del DB reagisce alle
interrogazioni.
@Alex


lavoro solo con maschere non associate..quindi non vedo cosa ci sia di 
sbagliato aprire una form (senza alcun recordset associato) e 
applicargli al volo una origine di un solo record
per le realtà con cui lavoro io non ho bisogno di scomodare query 
analizer per vedere quanti bit risparmio o quanti millisencodi per 
aprire una form.
cmq il bug rimane..con o senza filter
ciao
BFS

 BFS
Non dire cose strane...
Quandi dici che lavori con Form non associate non è vero, almeno in
quello che ci dici a spizzichi e bocconi:
     Form_OrdiniF.RecordSource = "select * from ordinif where
idordine=100"
Questa è una Form associata eccome...
Le altre cose ibadisco sono preconcetti per non conoscenza.
Per il tuo problema sinceramente invece non saprei cosa dirti non
essendo mai capitato.
@Alex

 @Alex
mi sono espresso male...non associate nel senso che il recordset della 
maschera lo associo al momento del caricamento della maschera 
stessa...per il solo record che mi serve visualizzare.
quindi non vedo cosa ci sia di male per una maschera che non ha nessuna 
origine dati impostata eseguire un 
miamaschera.recorsource=miosql/miaview/miaSP
principalmente stored procedure in fase di caricamento...sembra che 
abbia scritto una bestemmia.
chiedo al server di mandarmi solamente i dati che mi servono tramite un 
bel select from where da codice o tramite SP...piů elengante e classico 
di cosě!
ciao
BFS

 BFS
@Alex



e perchè mai? io non devo riscrivere niente
all'apertura della maschera non ho altro che un 
me.recordsource="select...where id=" & mioparametro/i
oppure me.recordource="exec miaSP '" & mioparametro/i & "'"
so che quello che devo chiedere al server sta li...bello e lineare nella 
semplicità del sql
se tu ti trovi meglio con i filtri buon per te
in termini di prestazioni dubito ci siano differenze.
ciao
BFS


Giusto per concludere un'aspetto tecnico:
Se scrivi come fai tu... usando il VBA, nel caso in cui ci siano da
fare modifiche ti tocca ricompilare tutto il codice VBA.
Sarà pur comodo e lineare...? Per me no, ma come giustamente hai detto
è una mia interpretazione.
Io che scrivo una Semplicissima Query SQL ed applico la proprietà
Filter non devo ricompilare nulla... è solo un'esempio di comodità.
Come dicevo ognuno si complica la vita come crede.
In termini di prestazioni come ti ho detto fin dall'inizio NON CI SONO
DIFFERENZE.
Ora una cosa che non conosco di cui mi hai fatto venire un dubbio...
per il quale ti chiedo chiarimenti....
Mi riferisco a questo:
     me.recordource="exec miaSP '" & mioparametro/i & "'"
Le SP solitamente si lanciano con una QueryPT, perchè questa è dotata
di priprietà CONNET... l'oggetto Recordset come può risolvere una
SP...?
Stai lavorando con ADP o con un MDB...?
Nel 1° caso la SP viene eseguita, ne sono sicuro, nel 2°(MDB)....?
@Alex


per me non è un complicarmi la vita...anzi...tutti i miei "filtri" 
stanno li dopo il where belli e chiari. comunque punti di vista.
si lavoro con i criticati file adp da parecchi anni..da quando ho 
abbandonato gli mdb come backend. Ma a me hanno sempre dato problemi zero
ciao
BFS


Allora ritiro tutto... l'ho capito tardi solo quando hai postato il
codice delle SP come Origine delle Form...
@Alex

"BFS" <B...@BFSBFS.it> ha scritto nel messaggio 
news:4d836df2$0$38650$4faf...@reader1.news.tin.it...

Prova cosě:
DoCmd.OpenForm "ordinif", , , , , acIcon
Form_OrdiniF.RecordSource = "select * from ordinif where idordine=100"
DoEvents
DoCmd.OpenReport "ordinif"
DoEvents
DoCmd.Close acForm, "ordinif"
oppure:
DoCmd.OpenForm "ordinif", , , , , acHidden
Form_OrdiniF.RecordSource = "select * from ordinif where idordine=100"
Forms!OrdiniF.Requery
DoEvents
DoCmd.OpenReport "ordinif"
DoEvents
DoCmd.Close acForm, "ordinif"
Ciao, Carlo 


ciao Carlo
DoCmd.OpenForm "ordinif", , , , , acHidden
 > Form_OrdiniF.RecordSource = "select * from ordinif where idordine=100"
 > DoEvents
 > DoCmd.OpenReport "ordinif"
 > DoEvents
 > DoCmd.Close acForm, "ordinif"
funziona!!
ma una motivazione tecnica?
non capisco perchè funzioni senza il doevents se la maschera è 
visibile...e come mai non mi stampi l'unica parte del report che non ha 
dati..ma solo loghi e scritte fisse
grazie mille
BFS

 BFS
Prego.
Ciao, Carlo