Newsgroup: it.comp.appl.access
Titolo: Stampe Pdf - gestire report vuoto

Ho un problema con la generazione delle stampe in pdf di Lebans.
Se aggiungo la gestione dell'evento report vuoto come indicato sotto,
Private Sub Report_NoData(Cancel As Integer)
    Cancel = -1
End Sub
La generazione mi va in errore (credo perchè si aspetta di generare un
file e di rinominarlo ma non lo trova).
Se tolgo la gestione dell'evento, mi crea un file pdf con la sola
intestazione del report e il classico #errore in corrispondenza dei dati
Come posso fare?
Nicoletta
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Nicoletta
Testa prima se ci sono dati e solo dopo generi il pdf
-- 
-- 
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access

 Come posso fare?
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it

 > Come posso fare?
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 Testa prima se ci sono dati e solo dopo generi il pdf
Come si fa?
Le query che stanno come origine dati alle mie stampe sono molto corpose.
C'è modo testare l'esistenza dei dati senza eseguire due volte le query?
Nicky


 Nicky
If Dcount("*","nomequeryotabella")>0 then
    Docmd.OpenReport ...
else
    msgbox "non ci sono dati da stampare"
endif
Ciao.
-- 
Sergio MAZZA 

Sergio MAZZA ha scritto:

ok, volevo solo sapere se la query di origine del mio report verrà così 
eseguita due volte, perchè la base dati è molto grossa e la query 
abbastanza pesante
Nicky

Nicky ha scritto:

Che sappia io non c'è modo di nn eseguire la query 2 volte, a meno che non gestire l'evento del report su pagina bianca....(nel senso che va bene cancel=-1, ma poi dalla maschera che ha lanciato il reporto devi scrivere codice per intercettare il l'annullamento!). se segui la strada delle query, ti conviene eseguirne una mooolto leggera (solo per verificare l'esistenza dei dati) senza tirare in ballo troppi join o parametri, e poi, se la risposta è affermativa, esegui la query vera.
Per la questione dello shift all'avvio proprio nn so...
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it

Fair87 ha scritto:

ok, grazie.
E' proprio una menata; se uso l'evento NoData sul report mi creo il 
problema nella generazione del file pdf.
Se testo prima i dati il problema è che ho un paio di query tra le altre 
che durano 15/20/30 minuti (sono stampe batch che girano dopo 
un'elaborazione notturna) e mi secca farle eseguire due volte (non mi 
viene in mente un metodo che mi dia una query 'leggera' in luogo di 
quella vera che è l'unica a darmi l'informazione.
Nicky

 Nicky
Possibili alternative:
- conta i record della tabella "padre";
- invece di una query di selezione, considera l'utilizzo di query di 
creazione tabella...
Ciao.
-- 
Sergio MAZZA 

 ...
Mi sembra normale che tutti e due errori succedono se non
è (più) aperto il report.
Non conosco ne la tua situatione nel programma (dove si trova
il codice ecc.) ne il tuo codice, ma hai provato cosa succede
se insieme col 2501 gestisci anche il 2046?


 Nicky
-- 


Karl Donaubauer ha scritto:

In realtà ciò che non mi spiego è l'errore 2046.
Il 2501 mi sta bene e la sua gestione è un problema a parte.
Il 2046 mi esce inaspettatamente, e non mi esce se eseguo il db con il 
tasto shift iniziale.
Il codice è quasi tutto in una form iniziale chiamata Login.
Siccome sono stampe batch normalmente fatte girare di notte, quando 
viene eseguita questa form piano piano si spazzola tutte le tabelle 
interessate per ogni punto vendita dell'attivitò dell'azienda per cui 
lavoro ed analizza movimenti, presenze, etc, etc.
In pratica c'è un ciclo su un recordset di punti vendita per ognuno dei 
quali va per esempio nella tabella movimenti di un certo tipo ad 
estrarre dei dati e a generare il report in pdf.
Il software è installato su un w2000 terminal server che fa da client ad 
un rdbms oracle 8.1.7
Quando provo ad aprire access ed a caricare l'mdb tenendo premuto lo 
shift per non far eseguire la maschera Login il tutto funziona.
Quando doppio clicco l'mdb arriva l'errore 2046 in fase di generazione pdf
Quando eseguo access e apro l'mdb senza lo shift anche qui arriva il 2046
Il codice di lebans (quasi per nulla modificato) è in un modulo a parte, 
il resto è tutto nel codice della form Login
ciao
Nicoletta


Un'altra cosa che mi viene in mente è che il s.o. è in inglese, mentre 
access 2003 è in italiano.
L'utente da me utilizzato è administrator (che potrebbe non essere 
quello che ha installato access perchè ci sono altri utenti amministrativi)
Ho modificato il codice di Lebans per inserire le varie diciture di 
snapshot format (italiano, inglese, invertite, etc) dopo aver messo per 
default quello presente nel registry
Nicoletta

   
cos'è l'autocorrezione dei nomi?
Questa è una delle query:
select azienda,matricola,trim(a.cognme || ' ' || a.nome) as 
Nominativo,b.livello1,uscita,entrata from (select codazi as azienda,matr 
as matricola,max(tmpeff) as uscita from gwtimbpres where 
ggpian=1055810880 and trans=1 group by codazi,matr,ggpian) SelUscita, 
(select codazi,matr,min(tmpeff) as Entrata from gwtimbpres where 
ggpian=1055812320 and trans=0 group by codazi,matr) SelEntrata, 
gwanabase a, gwanapres b where SelUscita.azienda=SelEntrata.codazi and 
SelUscita.matricola=SelEntrata.matr and  a.codazi=selentrata.codazi and 
a.matr=selentrata.matr and b.codazi=selentrata.codazi and 
b.matr=selentrata.matr and entrata-uscita< 660 and b.livello1 in 
('2','3','4','6','7','8');

 messo per default quello presente nel registry
È una causa frequenti di problemi.
Invece di usare "varie diciture" nella riga di Stephen con l'OutPutTo
devi solo sostituire il
"SnapshotFormat(*.snp)"
con
"Snapshot Format"
Questo funziona sia in inglese, italiano, tedesco.


Karl Donaubauer ha scritto:

Ho fatto anche quello ma la differenza tra le due esecuzioni rimane.
Qualcosa a livello delle dll di Lebans?

 ('2','3','4','6','7','8');
tu vieni da SQL vero?
Invece delle subquery usa i Join, ok per le tabelel derivate ma gli alias vogliono As



Si, scusa.
Dimenticavo che le query sono passthrough; in oracle quella è la 
sintassi corretta, ma non credo sia importante per le stampe.
La stessa query con le join in access mi sedeva il server.
Nicoletta


Le join lavorano anche in SQL
T-SQL è sempre T-SQL e questo lo ribadirà Vincenzo Turturro alla prossima CISA



Mi inchino :-)
ti assicuro che l'ho girata e rigirata per farla andare più veloce e 
quello è il metodo migliore per la mia base dati.
Nicky

 e questo lo ribadirà Vincenzo Turturro alla prossima CISA
-- 
cu
