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
}
}