Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di albis
    Registrato dal
    May 2002
    Messaggi
    912

    crystal report come si stampa o esporta

    utilizzo visual studio .net
    dove è compreso crystal report

    ho creato un report con crystal report e poi una web form che lo visualizza.

    solo che in alto compaiono solo i pulsanti di navigazione di crystal report (pagina successiva, pagina precedente , ....)
    ma non compare il pulsante di stampa.

    esiste ?

    io ero abituato con crystal report 7 e normali pagine asp
    e lì il pulsante di stampa c'era.

    cercando un pò in giro ho letto spesso dell'esportazione
    ma il pulsante esporta non mi compare , come mai ?

    qualcuno sà dirmi qualcosa ?
    Forza la magica ROMA

  2. #2
    Questa funzionalita' se non erro e' presente in Crystal report 10 e non invece nella versione compresa di default con vsstudio.net.
    Quindi il pulsante dovresti crearlo tu e fare in modo che una volta premuto venga eseguita una procedura di esportazione ad esempio in pdf o in word.
    Saluti a tutti
    Riccardo

  3. #3
    Utente di HTML.it L'avatar di albis
    Registrato dal
    May 2002
    Messaggi
    912
    Ok ma la stampa (sul client naturalmente) allora proprio non si può fare ?
    e poi l'esportazione dove avviene sul client ?

    e se sì sai dove posso trovare un esempio ?

    grazie
    Forza la magica ROMA

  4. #4
    Originariamente inviato da albis
    Ok ma la stampa (sul client naturalmente) allora proprio non si può fare ?
    ho detto che non c'e' un pulsante gia' pronto per l'uso, ma poi ti ho detto che puoi farlo tu il pulsante.
    e poi l'esportazione dove avviene sul client ?
    certo. Il server una volta avviata la procedura di esportazione ad esempio in pdf del report, crea il file pdf in memoria e lo invia al browser del client il quale si accorge che e' un documento pdf e carica il relativo lettore (acrobat reader).
    e se sì sai dove posso trovare un esempio ?
    mah... aspetta che faccio questa ricerca su msdn...
    http://search.microsoft.com/search/r...&c=0&s=1&swc=0
    ecco qua il primo che mi salta all'occhio
    http://msdn.microsoft.com/library/de...sedreports.asp
    Saluti a tutti
    Riccardo

  5. #5
    Utente di HTML.it L'avatar di albis
    Registrato dal
    May 2002
    Messaggi
    912
    grazie mille per la risposta
    nel mio caso c'erano delle componenti di difficoltà aggiuntive
    utilizzando un report sù pagina web se il report si connette ad un db sql è necessario rifare l'autenticazione sql da codice

    con uno script che avevo trovato proprio su msdn
    codice:
    		TableLogOnInfo crTableLogOnInfo = new TableLogOnInfo();
    		ConnectionInfo crConnectionInfo = new ConnectionInfo();
    
    		CrystalDecisions.CrystalReports.Engine.Database crDatabase;
    		CrystalDecisions.CrystalReports.Engine.Tables crTables;
    		CrystalDecisions.CrystalReports.Engine.Table crTable;
    
    
    crConnectionInfo.ServerName = "NomeServer";
    			crConnectionInfo.DatabaseName = "NomeDb";
    			crConnectionInfo.UserID = "Username";
    			crConnectionInfo.Password = "PWD";
    			crDatabase = crReportDocument.Database;
    			crTables = crDatabase.Tables;
    
    			foreach(CrystalDecisions.CrystalReports.Engine.Table crTable in crTables)
    			{
    				crTableLogOnInfo = crTable.LogOnInfo;
    				crTableLogOnInfo.ConnectionInfo = crConnectionInfo;
    				crTable.ApplyLogOnInfo(crTableLogOnInfo);
    			}
    in più la stored procedure che chiamo nel report ha un parametro

    codice:
    ParameterValues parColl = new  ParameterValues();
    ParameterDiscreteValue ParamterDescreteValue1 = new ParameterDiscreteValue();
    
    ParamterDescreteValue1.Value = Request.Form["txtTalDeTali"];
    parColl.Add(ParamterDescreteValue1);
    crReportDocument.DataDefinition.ParameterFields[0].ApplyCurrentValues(parColl);

    e poi alla fine ho esportato in pdf

    praticamente il file pdf viene fisicamente creato sul server
    viene puntato dalla pagina dicendo da codice al browser che il contenuto sarà pdf
    codice:
    Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType = "application/pdf";
    e poi il file viene cancellato

    quindi l'esportazione avviene sul server e poi si punta al file esportato

    a me sembrava strano
    ero abituato con le versioni precedenti di crystal report
    utilizzandolo da normali pagine asp
    dove veniva scaricato sul client il cab con il viewer di cristal report dove c'era il pulsante stampa
    e mi sembrava strano che nella nuova versione non ci fosse
    la stampa
    ma in realtà è così
    http://msdn.microsoft.com/library/de...rmsviewers.asp

    alla fine ho risolto così(allego il codice percè potrebbe essere utile ad altri)
    codice:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.Shared;
    
    namespace INR.PrevisioniBudget.Report
    {
    	/// <summary>
    	/// Summary description for WebForm2.
    	/// </summary>
    	public class StampaBudget : System.Web.UI.Page
    	{
    		TableLogOnInfo crTableLogOnInfo = new TableLogOnInfo();
    		ConnectionInfo crConnectionInfo = new ConnectionInfo();
    
    		CrystalDecisions.CrystalReports.Engine.Database crDatabase;
    		CrystalDecisions.CrystalReports.Engine.Tables crTables;
    	
    		private void Page_Load(object sender, System.EventArgs e)
    		{
    			// Put user code to initialize the page here
    			rptBudget crReportDocument  = new NomeReport();
    			ExportOptions crExportOptions = new ExportOptions();
    			DiskFileDestinationOptions crDiskFileDestinationOptions = new DiskFileDestinationOptions();
    			ParameterValues parColl = new  ParameterValues();
    			ParameterDiscreteValue ParamterDescreteValue1 = new ParameterDiscreteValue();
    			String Fname ;
    			
    			crConnectionInfo.ServerName = "NomeServer";
    			crConnectionInfo.DatabaseName = "NomeDb";
    			crConnectionInfo.UserID = "userName";
    			crConnectionInfo.Password = "PWD";
    			crDatabase = crReportDocument.Database;
    			crTables = crDatabase.Tables;
    
    			foreach(CrystalDecisions.CrystalReports.Engine.Table crTable in crTables)
    			{
    				crTableLogOnInfo = crTable.LogOnInfo;
    				crTableLogOnInfo.ConnectionInfo = crConnectionInfo;
    				crTable.ApplyLogOnInfo(crTableLogOnInfo);
    			}
    			
    
    			ParamterDescreteValue1.Value = Request.Form["txtTalDeTali"];
    
    			parColl.Add(ParamterDescreteValue1);
    
    			crReportDocument.DataDefinition.ParameterFields[0].ApplyCurrentValues(parColl);
    
    			
    			Fname = Server.MapPath("passa il path" + Session.SessionID + "Data.pdf");
    			
    			crDiskFileDestinationOptions.DiskFileName = Fname;
    			crExportOptions = crReportDocument.ExportOptions;
    			
    			
    			crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
    			crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    			crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
    
    			crReportDocument.Export();
    			
    			Response.ClearContent();
    			Response.ClearHeaders();
    			Response.ContentType = "application/pdf";
    			Response.WriteFile(Fname);
    			Response.Flush();
    			Response.Close();
    
    			
    			System.IO.File.Delete(Fname);
    			
    		
    		}
    
    		#region Web Form Designer generated code
    		override protected void OnInit(EventArgs e)
    		{
    			//
    			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
    			//
    			InitializeComponent();
    			base.OnInit(e);
    		}
    		
    		/// <summary>
    		/// Required method for Designer support - do not modify
    		/// the contents of this method with the code editor.
    		/// </summary>
    		private void InitializeComponent()
    		{    
    			this.Load += new System.EventHandler(this.Page_Load);
    
    		}
    		#endregion
    	}
    }
    Forza la magica ROMA

  6. #6
    Mi fa piacere che hai risolto. Aggiungo comunque, che non e' necessario creare il report e scriverlo sul file ma e' possibile crearlo in memoria e inviarlo direttamente al client cosi come ti avevo detto in precedenza. In questo modo ti eviti la scocciatura di dover utilizzare una directory con dei diritti di lettura e scrittura sempre fastidiosa da creare soprattutto se devi distribuire l'applicazione.
    Aggiungo poi che e' possibile una volta creato il dataset nell'applicazione inviarlo direttamente al report invece di farlo ricollegare alla fonte dati per prendere gli stessi dati.
    Saluti a tutti
    Riccardo

  7. #7
    Utente di HTML.it L'avatar di albis
    Registrato dal
    May 2002
    Messaggi
    912
    grazie ancora per la tua cortesia
    Originariamente inviato da riccardone
    Aggiungo comunque, che non e' necessario creare il report e scriverlo sul file ma e' possibile crearlo in memoria e inviarlo direttamente al client cosi come ti avevo detto in precedenza. In questo modo ti eviti la scocciatura di dover utilizzare una directory con dei diritti di lettura e scrittura sempre fastidiosa da creare soprattutto se devi distribuire l'applicazione.
    sull'esempio che mi avevi segnialato tù
    che poi è anche quello indicato quì
    http://msdn.microsoft.com/library/de...rmsviewers.asp

    il file viene creato fisicamente e non in memoria
    comunque a mè va bene così (se per caso sai indicarmi un link che spieghi come crearlo in memoria potrebbe essere utile)


    Originariamente inviato da riccardone
    Aggiungo poi che e' possibile una volta creato il dataset nell'applicazione inviarlo direttamente al report invece di farlo ricollegare alla fonte dati per prendere gli stessi dati.
    quì vorrei chiederti una tua opinione
    il mantenimento in memoria di un ogetto abastanza pesante come il dataset per passarlo al report non potrebbe alla lunga e con molte utenze creare problemi di risorse

    e poi nel caso specifico il report che urilizzo avrà due altri sottoreport che chiamano due altre stored procedure
    quindi come dovrei fare ? gli passo i trè dataset ?



    grazie ancora
    Forza la magica ROMA

  8. #8
    Originariamente inviato da albis
    quì vorrei chiederti una tua opinione
    il mantenimento in memoria di un ogetto abastanza pesante come il dataset per passarlo al report non potrebbe alla lunga e con molte utenze creare problemi di risorse

    e poi nel caso specifico il report che urilizzo avrà due altri sottoreport che chiamano due altre stored procedure
    quindi come dovrei fare ? gli passo i trè dataset ?
    il metodo che ti ho suggerito dovrebbe proprio evitare uno spreco di risorse nel senso che spesso quello che andiamo a stampare in un report e' qualcosa che la nostra applicazione ha gia' (visualizzato all'utente). In questo caso, e' inutile far andare a richiedere gli stessi dati da crystal report una seconda volta. In piu' preferisco avere a che fare con il db dal codice del'applicazione in modo da gestire meglio eventuali errori. Per il resto, o che passi un dataset gia' riempito con le varie tabelle o che lo fai riempire da crystal report il discorso non dovrebbe cambiare pero' bisognerebbe vedere piu' da vicino l'applicazione quindi se ti trovi bene cosi' come stai facendo...
    Saluti a tutti
    Riccardo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.