VB NET - Crystal 2008. Impostazioni stampante e risultto stampa

lunedì 10 febbraio 2014 - 18.42
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows 7  |  Visual Studio 2008  |  SQL Server 2008 R2  |  Crystal Reports 2008

zactime Profilo | Newbie

Un saluto a tutti.

Stampo attraverso ReportViewer.
Vorrei sapere se da codice è possibile:
- impostare il numero di copie e la stampante in modo che quando l'utente clicca sul pulsante di stampa dell'anteprima appaiano i valori da me indicati
- nel caso l'utente abbia cambiato la stampate indicata nel form che appare cliccando sul pulsante di stampa dell'anteprima, sapere quale stampante ha scelto
- riuscire a capire se l'utente ha realmente mandato in stampa quello che ha nell'anteprima oppure ha solo visualizzato ed è uscito.

Eventualmente, se una o più di queste informazioni non è possibile impostarle/ottenerle vorrei sapere se è possibile mandando in stampa con il PrintToPrinter.
Per il primo dei tre punti so già che con il PrintToPrinter è possibile.

Grazie.

Oscar

freeteo Profilo | Guru

Ciao Oscar,
come ti sei già risposto tu, usando il metodo PrintToPrinter puoi mandare in stampa il report da codice, ed è quello che mi è venuto in mente proprio leggendo il tuo post.

Per il quarto punto, ossia capire se ha mandato in stampa o no, è difficile, perchè tu invochi dei metodo che rimappano a cose di sistema, di cui non hai un controllo diretto (l'utente potrebbe premere "annulla" e chiudere la maschera) quindi a meno di andare a chiedere a Windows se è partita una stampa (cosa che non ho mai fatto), il problema sicuramente non lo riesci a risolvere da CrystalReport...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

zactime Profilo | Newbie

Ciao Matteo,
innanzitutto grazie per la risposta.

E' come (purtroppo) sospettavo. Ho provato a chiedere a chi è più esperto di me e magari era a conoscenza di qualcosa che ignoro.
Nulla, farò la stampa senza anteprima.

Ma, sia per curiosità che per eventuali necessità future, c'è una possibilità per quando riguarda il secondo punto, ovvero, a livello di anteprima sapere quale stampante diversa da quella di default ha eventualmente scelto l'utente? Ed anche il numero di copie.

Grazie ancora.

Oscar

freeteo Profilo | Guru

>Ciao Matteo,
>innanzitutto grazie per la risposta.
di niente figurati, siamo qui per questo.



>Ma, sia per curiosità che per eventuali necessità future, c'è
>una possibilità per quando riguarda il secondo punto, ovvero,
>a livello di anteprima sapere quale stampante diversa da quella
>di default ha eventualmente scelto l'utente? Ed anche il numero
>di copie.
guarda io per evitare di diventare matto a cercare di comunicare con applicativi, mi farei semplicemente una mia maschera che presento all'utente dove gli faccio scegliere la stampante, le copie etc...e poi con un bel pulsante "Stampa" lo faccio stampare sulla stampante fisica.
A questo punto, usando codice che scrivo io, quindi controllo totalmente, posso fare quello che voglio, come ad esempio salvarmi le informazioni su che stampante ha scelto.
Io farei così, se posso farlo ovviamente...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

zactime Profilo | Newbie

Comprendo e condivido la tua considerazione sul comunicare con gli applicativi esterni.

Ma come fai con l'anteprima? La fai comunque vedere disabilitando il suo pulsante di stampa e delegando come dicevi ad un tuo pulsante Stampa?
E se fai in questo modo come gestisci la cosa?
- Apri automaticamente l'anteprima e aspetti che sia chiusa poi visualizzi la tua form di stampa
- Dai la possibilità di visualizzare l'anteprima e contemporaneamente lanciare la stampa dalla tua form attraverso pulsanti separati
- Oppure... come fai?

Ciao.
Oscar

freeteo Profilo | Guru

Ciao,
no intendo che faccio una mia maschera dove chiedo i dettagli e poi mando in stampa con quei parametri...ma pensavo di fare senza anteprima soltanto la richiesta di parametri diciamo...

Sostanzialmente quello che vedi nel report è già un'anteprima, perché rifare ancora la richiesta?
Capisco che magari non è il tuo caso, ma dipende da cosa deve fare l'utente e soprattutto quanto skillato è...perchè ultimamente vedo la tendenza a semplificare tutto, in particolare le maschere dove l'utente mediamente dovrebbe dare un "ok" e basta.

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

zactime Profilo | Newbie

Ciao Matteo,
questo lavoro riguarda la gestione di test di esame.
In sequenza devono essere generati 3 tipi di stampa: due tipi di Crystal e un terzo tipo consistente in uno o più allegati PDF.
La prima stampa di Crystal riguarda, per ogni allievo partecipante, la griglia per le risposte: domanda 1, risposta A, B, C o D; domanda 2, risposta A, B, C o D; ecc.
La seconda stampa di Crystal riguarda la stampa delle domande in N copie (N = numero degli allievi partecipanti).
Infine c'è la stampa in N copie (come sopra) di ogni allegato PDF eventualmente associato alle varie domande.

Mi sarebbe piaciuto operare in questo modo:
- apro l'anteprima della prima stampa Crystal, intercetto la stampante scelta e soprattutto se è stata realmente effettuata la stampa.
Se la stampa non è stata lanciata termino qui.
- apro l'anteprima della seconda stampa Crystal passandogli già la stampante scelta in precedenza e il numero di copie che io conosco.
Eventualmente anche in questo caso se la stampa non è stata lanciata termino qui.
- lancio la stampa dei PDF in N copie attraverso SumatraPDF.

Ora... con l'anteprima di mezzo abbiamo appurato che è un impresa al limite dell'impossibile. Capire dall'anteprima la stampante scelta e soprattutto se la stampa è stata realmente lanciata pare sia veramente complicato o addirittura impossibile.
Ho fatto il tutto senza anteprima e sono riuscito a gestirlo.

Un piccolo sfogo: Crystal cambia di versione ma a mio avviso si porta dietro gli stessi difetti da anni. Ci sono delle situazioni che, leggendo nel web, non piacciono a molti ma non fanno nulla per venire incontro alle richieste.

Tu che strumento alternativo consiglieresti (o usi) per la generazione di report che possano interagire con VB NET?

Grazie.

Oscar

freeteo Profilo | Guru

>Ora... con l'anteprima di mezzo abbiamo appurato che è un impresa
>al limite dell'impossibile. Capire dall'anteprima la stampante
>scelta e soprattutto se la stampa è stata realmente lanciata
>pare sia veramente complicato o addirittura impossibile.
confermo, di fatto viene dato quasi tutto in pasto alla stampante quindi ne perdi il controllo


>Ho fatto il tutto senza anteprima e sono riuscito a gestirlo.
ok, ottimo


>Un piccolo sfogo: Crystal cambia di versione ma a mio avviso
>si porta dietro gli stessi difetti da anni. Ci sono delle situazioni
>che, leggendo nel web, non piacciono a molti ma non fanno nulla
>per venire incontro alle richieste.
concordo anche qui, l'ho abbandonato per troppa pesantezza...chiaramente è un motore che gode di anni di storia e di tante funzionalità evolute, che a volte possono fare la differenza. Ma paga una certa rigidità e soprattutto una certa pesantezza che spesso diventa insopportabile.

>Tu che strumento alternativo consiglieresti (o usi) per la generazione
>di report che possano interagire con VB NET?
io uso Sql Reporting, ossia il motore di Reportistica integrato in Visual Studio, che nasce come report di Sql, ma poi è diventato un motorino a se stante.
Spessisimo infatti lo uso per visualizzare collection di oggetti, ed addirittura dove mi serve, vado a modificarlo direttamente nel file rdlc che è un xml standard, quindi posso "hackerare" qualcosetta.
Poi è possibile integrarci del codice vb.net (purtroppo senza compilazione, quindi devi vedere a runtime se tutto funziona) ma veramente è leggero, veloce e permette una certa interattività che a volte è proprio un tocca-sana per i clienti.
Non ultimo, ha un potente motore di grafici (hanno fatto un accordo con la Dundas) che gioca a suo favore.

Per maggiori info ti consiglio:
http://technet.microsoft.com/en-US/sqlserver/ff660783
http://gotreportviewer.com/

e poi qualcosa di mio, se vuoi:
http://blogs.dotnethell.it/freeteo/SqlReporting-report-dinamici-con-gruppo-dinamico__15746.aspx (l'esempio nasce per un problema diverso, ma se vuoi prendi come esempio l'accesso ai dati, il passaggio parametri etc..)
http://blogs.dotnethell.it/freeteo/Category_293.aspx (qui trovi tutti i post del mio blog relativi alla reportistica in generale)

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

zactime Profilo | Newbie

Ti ringrazio per le dritte.

Prima devo terminare un paio di lavori e poi mi metterò a studiare quello che proponi.
Magari ti disturberò ancora (il meno possibile) in merito.

Grazie ancora.

Ciao
Oscar

freeteo Profilo | Guru

Ok, siamo qui se hai bisogno.


Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5