Newsgroup: it.comp.appl.access
Titolo: Come fare per velocizzare la preparazione ed esecuzione dei report ?

Buongiorno a tutti.
Vorrei ricevere un parere da coloro che sono più esperti di me a
riguardo dell' argomento descritto in oggetto.
La mia situazione è questa: eseguo dei report piuttosto articolati
(con vari sottoreport e con elementi grafici) che richiedono un tempo
piuttosto alto di preparazione (almeno per come li ho realizzati io).
Io procedo in questo modo (utilizzando Access 2000, sistema operativo
Xp):
1) prendo la richiesta di stampa da una lista a selezione multipla in
cui ogni riga della lista ha una key numerica corrispondente all' item
da stampare (si tratta di articoli con i dati suddivisi in varie
tabelle: dati di testata e dati correlati disposti in varie tabelle
dipendenti, la key è il numero progressivo di inserimento nella
testata).
2) genero una tabella provvisoria (coda di stampa) in cui inserisco le
key selezionate
3) in più passi (con query in sequenza fra loro) ricavo e collego fra
loro i dati prelevati dalle varie tabelle e trasformati in modo
adeguato per la stampa (ci sono parecchi campi calcolati e anche
elementi grafici): seleziono "in partenza" la base dati imponendo un
Join fra la tabella "coda di stampa" e le varie tabelle sorgenti dei
dati da stampare.
4) al termine di tutto questo arrivo ad una query "origine per stampa"
la quale è la sorgente del report.
5) nella struttura del report inserisco i necessari raggruppamenti ed
ordinamenti.
Penso, così facendo, di procedere in modo adeguato per la preparazione
dei dati da stampare:
DOMANDA 1) è possibile fare di meglio ?
DOMANDA 2) è possibile stampare "in sottofondo" con Access ?
o, in subordine, può essere conveniente preparare un mdb di sole
stampe per eseguire , appunto, le stampe di esecuzione laboriosa ?
(sempre che si possano utilizzare gli altri task aperti nel tempo di
preparazione delle stampe: ma si può ?)
Grazie per le attenzioni alla questione
Giorgio

Giorgio
-- 
Ciao
----------------------------------------------------------
:: Pablitomf (Maurizio Facciuti)
:: Access : Ver.97 - 2K
----------------------------------------------------------
http://www.accessgroup.it/
http://www.sitocomune.com/
http://www.napolisoccer.it/
----------------------------------------------------------
La mia tesi :
"Non mi fido molto delle statistiche, perchè un uomo con la testa nel forno 
acceso e i piedi nel congelatore statisticamente ha una temperatura media." 

 Giorgio
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

buongiorno, ho letto le risposte di PablitoMf e Alex e li rimgrazio
Farò un riscontro dei tempi con i due suggerimenti ricevuti:
quello di Alex per limitare la selezione di dati da stampare all' avvio
della preparazione dei dati stessi, quello di Maurizio per ottenere
tutti i dati in tabelle temporanee.
Non mi ero dilungato nell' esporre i dettagli delle esigenze di queste
mie stampe più elaborate ma li posso aggiungere ora.
In sintesi si tratta di stampare una scheda completa di un articolo (un
tessuto in questo caso) o una sua disposizione di lavoro.
Ho suddiviso i dati dell' articolo in varie tabelle (le principali
sono: Codice, DatiPresentazione, DatiFabbricazione, DatiTecniciGrafici
ma ce ne sono altre per l' articolo e altre per i Lavoranti).
Le tabelle dell' articolo (che hanno come capostipite la tabella
Codice) sono collegate fra loro dal numKey progressivo di registrazione
del Codice che diventa la key esterna nelle altre tabelle (relazioni
sia 1a1 che 1aN).
La stampa è strutturata, similmente, in un report principale (da
Codice) e in vari sottoreport (talvolta annidati fra loro): da un
minimo di 3/4 ad un massimo di 8/10.
I sottoreport prendono i dati dalle varie tabelle e c' è la necessità
di far arrivare alla stampa dati comunque elaborati (calcoli tecnici,
formattazione condizionata di elementi grafici): per ottenere queste
elaborazioni è necessario (almeno per le mie conoscenze) mettere in
sequenza più query con campi calcolati (ricevo comunque il messaggio
"query troppo complessa" se cerco di eliminare questi passaggi).
La mia esigenza è quindi di limitare le elaborazioni di preparazione
dati ai soli record interessati fra tutti quelli presenti nel DB: per
questo, ad ogni "punto di partenza" delle varie query che originano i
dati dei sottoreport pongo la tabella temporanea "coda di stampa"
(elenco record interessati).
Il tempo complessivo di esecuzione di queste stampe è accettabile per
il fatto che risultano chiare ed esaustive ma di per sè è piuttosto
alto (se si scelgono molti item si conta in minuti) ed era per questo
che chiedevo consigli.


Aggiungo la mia esperienza.
Quello che ti posso consigliare è la creazione in locale (se sei in 
rete) di un altro mdb contenente le tabelle di appoggio, queste saranno 
collegate all'mdb front-end.
Visto che utilizzi le tabelle temporanee, con lo svuota/riempi, l'mdb 
front-end potrebbe risentirne e richiedere il compattamento in tempi più 
ristretti di quelli "fisiologici".
Provare a semplificare le query dividendole in blocchi logici; se devi 
eseguire dei calcoli su raggruppamenti o selezioni molto complesse è 
probabile che guadagni in velocità eseguendo prima la selezione dei dati 
scrivendola nella tabella temporanea, con una query di aggiornamento 
eseguire i calcoli e alla fine l'output del raggruppamento in un'altra 
tabella temporanea; quest'ultima è la tabella per il report.
Ma come dice Alessandro tutto dipende dalla complessità della tua 
applicazione e questo solo tu lo puoi sapere...
Ciao.
Sergio MAZZA

... [CUT]
Sono Giorgio da Prato, ringrazio anche per questa risposta.
Concludo anche io che dovrò testare i tempi di risposta preparando
più di una tabella di appoggio come base per ottenere i dati elaborati
appositamente dalle query di preparazione stampa.
Per quel che riguarda la mia procedura aggiungo ancora: è in rete, è
suddivisa in FE e BE, le tabelle temporanee non vengono generate nel
mdb di BE me nei vari mdb locali (ogni PC può generare le proprie
stampe), ritengo necessario ricorrere alla "coda di stampa" perchè la
selezione degli item da stampare avviene in più form per ogni PC.
Grazie di nuovo

 ha scritto nel messaggio news:1126786739.3...@g47g2000cwa.googlegroups.com...
Sono Giorgio da Prato, ringrazio anche per questa risposta.
Concludo anche io che dovrň testare i tempi di risposta preparando
piů di una tabella di appoggio come base per ottenere i dati elaborati
appositamente dalle query di preparazione stampa.
Per quel che riguarda la mia procedura aggiungo ancora: č in rete, č
suddivisa in FE e BE, le tabelle temporanee non vengono generate nel
mdb di BE me nei vari mdb locali (ogni PC puň generare le proprie
stampe), ritengo necessario ricorrere alla "coda di stampa" perchč la
selezione degli item da stampare avviene in piů form per ogni PC.
Grazie di nuovo
[risposta]
Mdb locali ma non quelli FE perň...
Ciao.
-- 
Sergio MAZZA