Newsgroup: it.comp.lang.visual-basic
Titolo: Stampare su diverse stampanti.

Salve a tutti.
Sto facendo un programmino che mi genere dei report (normalissimo
datareport)
Il programma ti permette di inserire dei dati, li elabora, poi genere questo
report magari di tre pagine.
Ho la necessità di stampare una pagina su una stampante, una su un altra e
la terza su un altra ancora.
Qualcuna di queste stampanti sono addirittura ad aghi (stampano su fogli
multicopia).
Sapete dirmi come posso fare??
Al limite, posso anche generare 3 report diversi, ognuno di 1 pagina (lo fa
già)
Quello che devo fare ora è farlo stampare su una stampante magari senza far
vedere il commondialog, o farlo vedere ma con la stampante che voglio io già
scelta.

 che voglio io già scelta.
Il datareport stampa sempre sulla stampante predefinita di sistema, se non
viene visualizzato il commndialog di scelta stampante.
L'opzione che hai è quella di impostare la stampante di default su
\\pippo\stampante_1, stampare, e poi ripristinare il settaggio precedente.
Come potrai vedere, è uno schifo di soluzione.
A tutt'oggi, però, non ne conosco altre.
Ciao
Alberto
--
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mie canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti...

 la terza su un altra ancora.
http://www.sitocomune.com
 > General > Gestire la stampante predefinita
giuseppeD

 Come potrai vedere, è uno schifo di soluzione.
Potrebbe essere una soluzione che al momento faccia proprio al mio caso.
Ma che tu sappia, si può impostare il datareport su una stampante o meno??
Mi spiego meglio.
Il mio cliente inserisce i dati su una form (esempio una lista di articoli).
Questi articoli sono di tipoligia diversa.
Devo fare una pagina (tipo fattura) diversa per ogni tipologia di articoli,
e stamparle su stampanti diverse.
Hai qualcosa da suggerire???


Se vuoi posso ripetere esattamente il mio post precedente:
1) Prepari il datareport "RPT_PAG_1"
2) Imposti la stampante di sistema su \\pippo\printer_1
3) Stampi il datareport
4) Prepari il datareport "RPT_PAG_2"
5) Imposti la stampante di sistema su \\pippo\printer_2
6) Stampi il datareport
7) Prepari il datareport "RPT_PAG_3"
8) Imposti la stampante di sistema su \\pippo\printer_3
9) Stampi il datareport
10) Reimposti la stampante di sistema su quella che c'era all'inizio (e che
tu avrai salvato da qualche parte)



Bene, ma il mio cliente, una volta riempito il form, preme su un pulsante
anteprima, questo gli permette di vedere il report.
La finestra del report ha già un pulsante stampa.
Allora io che dovre fare??
Fare tre finestre diverse?? Fare apparire una dopo che ho chiuso quella
precedente?
Ma così il mio cliente non ci capisce un emerita mazza!!!!!
--
__________________________________
Usi Messenger??
Parliamo velocemente, aggiungimi ai contatti.
glaucoc...@libero.it

 Ma così il mio cliente non ci capisce un emerita mazza!!!!!
Ho l'impressione che anche tu non sia messo benissimo.
Fin dal primo post ti ho detto che se fai apparire il commondialog puoi
gestire la stampa manualmente.
Visto che insistevi, ho cercato di trovare il modo di risolvere il problema
senza interattività.
Poi adesso mi parli di anteprima...
Allora fai apparire il commondialog di scelta e sei a posto.
Mah...


 senza interattività.
Si, come detto sopra se sono 3 finestre diverse, tu pensi che il cliente
tutte le volte che deve stampare, vada a cambiare la stampande sul dialog
per ben 2 volte????
E quanti clic fa??
1, pulsante anteprima (o stampa) sul form
2, pulsante stampa sul primo report
3, scegli la spampante sul primo dialog
4, stampa sul dialog
5, pulsante stampa sul secondo report
6, sceglie la stampante sul secondo dialog
7, stampa sul dialog
e così via per quanti report sono


 4, pulsante stampa terzo report
Un consiglio spassionato.
Rileggiti i miei post.
Prova a mettere in pratica quello che dicevo io.
Poi ne riparliamo.
Ciao
Alberto

No, non č un pesce d'aprile.
Solo che sono stanco e non ho capito il tuo consiglio.
Non sono riuscito a fare quello che mi hai detto semplicemente perchč non ho
capito.
Ti ringrazio della tua infinita pazienza, ti chiedo con gentilezza di
rispiegarmi la cosa
Dunque,
il cliente inserisce tutti gli articoli indistintamente nella form
Gli articoli sono di 3 tipologie
Dovo stampare ogni tipologia su una stampante diversa (Turbe psichiche del
cliente)
Cosa posso fare??
Tre finestre diverse con 3 report separati?
Un report unico con piů pagine? (mmmm.. mi pare piů difficile separare la
stampa)
Ti prego fammi capire

 separare la stampa)
Come prima cosa devi capire tu cosa vuoi fare: Da quello che mi chiedi, mi
sembra che il problema non sia 'come stampare su stampanti diverse', bensì
'come stampare 3 blocchi diversi'.
Quindi siamo più a monte.
Comunque vediamo:
Hai due possibilità: ho fai un unico report con tre pagine, o tre report
distinti.
Diciamo che nel primo caso avrai 3 anteprime, nel secondo ne avrai una sola.
Opzione 1: tre report distinti.
Crei il primo report.
Imposti la stampante di sistema su pippo1
Visualizzi l'anteprima.
Se l'utente preme 'stampa' il report va su pippo1
Crei il secondo report.
Imposti la stampante di sistema su pippo2
Visualizzi l'anteprima.
Se l'utente preme 'stampa' il report va su pippo2
Crei il terzo report.
Imposti la stampante di sistema su pippo3
Visualizzi l'anteprima.
Se l'utente preme 'stampa' il report va su pippo3
Reimposti la stampante di sistema su quella che c'era all'inizio.
Opzione 2: Un report con tre pagine
Crei il report.
Visualizzi l'anteprima.
Se l'utente preme 'stampa', nell'evento opportuno (non ricordo quale)
all'interno del datareport fai:
    - imposti la stampante di sistema su pippo1
    - stampi la prima pagina
    - imposti la stampante di sistema su pippo2
    - stampi la seconda pagina
    - imposti la stampante di sistema su pippo3
    - stampi la terza pagina
    - imposti la stampante di sistema su quella che c'era all'inizio
Personalmente non ho mai provato il secondo metodo, per cui non so
esattamente quali difficoltà ci siano.
Sicuramente dovrai mettere qualche loop con dei semafori per gestire il
fatto che il print è asincrono, ma a parte quello dovrebbe andare.
Consiglio il primo, anche se, andando a toccare la stampante di default, è
uno schifo.
Ma, come ti dicevo, non conosco altre vie.



Bene, siamo arrivati al dunque.
È proprio questo che volevo sapere, come stampare queste cavolo di pagine
separatamente.

 pagine separatamente.
In che senso?
Hai guardato gli eventi asincroni del datareport?



Dici che la soluzione è imparare e "mastruzzare" con
DataReport_AsyncProgress(ByVal JobType As
MSDataReportLib.AsyncTypeConstants, ByVal Cookie As Long, ByVal
PageCompleted As Long, ByVal TotalPages As Long)
??


Esatto.
C'è stato un altro thread simile, molto di recente, in cui era appunto
paralto di questo evento, anche se di sfuggita.
Comunque è molto semplice. Guarda con F2 le enumerazioni delle costanti, e
ti si chiarirà tutto.
