Newsgroup: it.comp.appl.access
Titolo: stampa condizionale

Devo stampare delle tessere, nella mia tabella ho un campo si/no riferito
alla stampa delle tessere, vorrei che, dopo aver effettuato la stampa, una
query di aggiornamento mi aggiornasse tale campo a -1.
Come posso realizzarlo?
Grazie Marcello

 ha scritto nel messaggio
news:3wzea.92341$pG1.2...@news1.tin.it...

Non capisco a capire quale sia il problema.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Come posso identificare che il processo di stampa sia avvenuto veramente per
quel determinato record?
Esempio il ......di turno interrompe la stampa a metà, così mi trovo meta
record stampati e metà no come posso fare la prossima volta a sapere quali
stampare?
Una qery di aggiornamneto da sola non mi basta se non posso verificare con
certezza che sia avvenuta la stampa.
Grazie Marcello.

 ha scritto nel messaggio
news:IgEea.132569$zo2.3...@news2.tin.it...

Penso proprio che vuoi la luna!
Controllare il ..... di turno è compito del suo capo e non di Access. :-)



Non lo so mi chiedevo solo se si potevano controllare i processi di stampa,
io sono un dilettante, quando posso cerco di migliorarmi, ho letto pių volte
che un buon programmatore
dovrebbe cercare di prevedere, anche le .....malefatte degli utenti.
Grazie ancora MArcello

 dovrebbe cercare di prevedere, anche le .....malefatte degli utenti.
[...]
    :-)))
    Questo e' vero, anche se e' praticamente impossibile... Ma riguarda
comunque le malefatte *controllabili*.
    Per il tuo problema, potresti far apparire una maschera di conferma,
per intenderci del tipo di quella che vedi quando lanci la stampa di
prova delle proprieta' della stampante, e aggiornare quindi il campo
solo se l'utente ha confermato la corretta esecuzione della stampa.
    (Facci sapere se ed eventualmente come hai risolto. Grazie.)
--
Ciao :o)
Maurizio
--------
?SPQR(C)
 X
--------


La tua idea mi sembra veramente buona penso che risolvero cosi
Grazie



Ho fatto un bel po' di tentativi, ma alla fine il ... di turno puo'
sempre trovare il modo di fare una ... che non avevo previsto. 
Cosi' ho deciso di non provarci neppure a controllare se la stampa e'
davvero avvenuta, e invece di inserire un meccanismo di 'annullamento'
virtuale della stampa. 
Mi spiego. Ciascuna tessera ha uno 'status' iniziale (un flag) pari a
1 (ossia 'non ancora stampato'). Tu permetti all'utente di aprire il
report per la stampa, e poi intercetti la chiusura del report con una
bella routine che fa queste cose:
1) messaggio di conferma 'hai davvero ultimato la stampa? vuoi che lo
status delle tessere sia aggiornato?'. In questo modo l'utente ha la
possibilita' di vedere il report in anteprima, senza stampare nulla.
Se risponde 'no', uscire dalla routine senza fare altro.
2) se la risposta e' positiva, aggiorni lo status delle tessere
comprese nel report a -1 (che vuol dire 'questa tessera e' stata
stampata'). Basta un DoCmd.RunSql, etc. etc.
3) adesso devi tenere nota in un registro di log di quali sono le
tessere che hai appena aggiornato. La cosa si può fare in molti modi,
ma io ho creato una tabella apposta, con alcuni campi (a rigore
basterebbero data e ora della presunta stampa, ID della tessera
stampata). Adesso occorre che tu, nella routine, accodi alla tabella
di log l'indicazione che queste tessere sono state stampate. Anche
qui, basta un DoCmd.RunSql e il lavoro e' presto fatto.
4) a questo punto puoi chiudere il report.
La logica di tutto questo è che le tessere vengono considerate
'stampate' qualunque cosa avvenga in realta' (ossia il loro flag di
status e' aggiornato), ma l'utente ha in seguito la possibilita' di
ripristinare lo status originario di una o piu' tessere, se si accorge
che, per un motivo o per l'altro, queste non sono effettivamente
uscite dalla stampante. 
Per fare questo basta ovviamente una maschera apposita, che mostri il
contenuto della tabella di log, e consenta di ripristinare manualmente
lo status delle tessere stampate. 
Per quanto riguarda la manutenzione della tabella di log, si puo' fare
in due modi: 
1) il contenuto della tabella viene automaticamente azzerato subito
prima di eseguire la routine descritta sopra. In questo modo il log
conterra' solo le informazioni relative all'ultima stampata di
tessere.
2) tra le operazioni da effettuare automaticamente all'apertura del
database si inserisce una routine che cancella i dati piu' vecchi di
una settimana (per es). Cosi' si possono annullare anche le stampe
precedenti all'ultima, ma comunque si evita che la tabella cresca
all'infinito.
E' un po' laborioso, ma non sono riuscito a trovare una soluzione
migliore, finora.
poli

 migliore, finora.
Tutto molto interessante, penso che farò qualcosa del genere,
Grazie Poli.
Marceme