Mi problema es el sgt, estoy trabajando en una aplicación que ya tiene definido sus reportes en crystal report se imprimen y lo hace bien, pero ahora quieren que se escojan varios reportes y se impriman, yo coloco los check en el datagridview pero tengo un problema que no se como escoger un dato que necesito y está en el data grid.
El codigo que está en el momento es el sgt, éste es el código del botón (este es en detalle de la orden)
Código:
éste formulario se llama detOrdenTrabajo.aspx, en la cabecera de éste formulario se encuentra el lblOT.Textprotected void btnInprimir_Click(object sender, EventArgs e)
{
Session["criterio"] = "{OrdenesTrabajo.IdOrdenTrabajo}=" + lblOT.Text;
Session["informe"] = "OrdenTrabajo.rpt";
Response.Redirect("mreporte.aspx");
}
al yo listar las ordenes de trabajo lo hago en el formulario OrdenesTrabajo, ahí coloco los check y el nuevo botón de imprimir, al no tener el lblOT, porqué el número de la orden de trabajo se encuentra es en el datagridview yo coloqué
Código:
Pero no me funcionó, pensé que si lo colocaba así me taería el número de la OT, y el código de mreporte.aspx es el sgtprotected void btnInprimir_Click(object sender, EventArgs e)
{
Session["criterio"] = "{OrdenesTrabajo.IdOrdenTrabajo}=" + detOrdenTrabajo.aspx?id={0};
Session["informe"] = "OrdenTrabajo.rpt";
Response.Redirect("mreporte.aspx");
}
Código:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.Threading;
using System.Globalization;
public partial class admin_mreporte : System.Web.UI.Page
{
//protected System.Web.UI.WebControls.Label lblError;
//protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;
protected CrystalDecisions.CrystalReports.Engine.ReportDocument orpt;
string CaminoReporte;
//DiscreteParam crReportDocument;
ParameterFields crParameterFields;
ParameterField crParameterField;
ParameterValues crParameterValues;
ParameterDiscreteValue crParameterDiscreteValue;
Database crDatabase;
Tables crTables;
TableLogOnInfo crTableLogOnInfo;
//protected System.Web.UI.WebControls.Label lblError;
ConnectionInfo crConnectionInfo;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US",false);
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Response.Cache.SetNoServerCaching();
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
InitializeComponent();
try
{
string strTemp = Session["criterio"].ToString();
strTemp = strTemp.Replace("=0","=false");
strTemp = strTemp.Replace("= 0","=false");
Session["criterio"]=strTemp;
CrystalReportViewer1.Width = Unit.Percentage(100);
StartReport();
}
catch(Exception ex)
{
lblError.Text = ex.Message + "<br>" + Session["criterio"].ToString() + "<br>" + CaminoReporte;
}
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.orpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
//
// orpt
//
//this.orpt.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.DefaultPaperOrientation;
//this.orpt.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperLetter;
//this.orpt.PrintOptions.PaperSource = CrystalDecisions.Shared.PaperSource.Upper;
//this.orpt.PrintOptions.PrinterDuplex = CrystalDecisions.Shared.PrinterDuplex.Default;
this.Error += new System.EventHandler(this.WebForm1_Error);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void StartReport()
{
CaminoReporte = ConfigurationManager.AppSettings["CaminoReportes"];
if(Session["informe"]==null)
{
lblError.Text = "Informe no existe";
return;
}
CaminoReporte += Session["informe"].ToString() ;
orpt.Load(@CaminoReporte);
crConnectionInfo = new ConnectionInfo();
crConnectionInfo.ServerName = ConfigurationManager.AppSettings["Servidor"];
crConnectionInfo.DatabaseName = ConfigurationManager.AppSettings["Bd"];
crConnectionInfo.UserID = ConfigurationManager.AppSettings["Usuario"];
crConnectionInfo.Password = ConfigurationManager.AppSettings["Clave"];
//Get the tables collection from the report object
crDatabase = orpt.Database;
crTables = crDatabase.Tables;
Logon(orpt,ConfigurationManager.AppSettings["Servidor"],ConfigurationManager.AppSettings["Bd"],ConfigurationManager.AppSettings["Usuario"],ConfigurationManager.AppSettings["Clave"]);
orpt.RecordSelectionFormula = Session["criterio"].ToString();
orpt.Refresh();
//Create an instance of the strongly-typed report object
//crReportDocument = new DiscreteParam();
//The viewer's reportsource must be set to a report before any
//parameter fields can be accessed.
CrystalReportViewer1.ReportSource = orpt;
//this.orpt.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.DefaultPaperOrientation;
this.orpt.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.DefaultPaperSize;
//this.orpt.PrintOptions.PrinterDuplex = CrystalDecisions.Shared.PrinterDuplex.Default;
//Set the modified parameters collection back to the viewer so that
//the new parameter information can be used for the report.
CrystalReportViewer1.ParameterFieldInfo = crParameterFields;
//CrystalReportViewer1.ReportSource = orpt;
CrystalReportViewer1.DataBind();
}
private void WebForm1_Error(object sender, System.EventArgs e)
{
Response.Write(Server.GetLastError());
// Server.ClearError();
}
// Helper method that iterates through all tables in a report document
bool ApplyLogon(ReportDocument cr, ConnectionInfo ci)
{
TableLogOnInfo li;
// for each table apply connection info
foreach (CrystalDecisions.CrystalReports.Engine.Table tbl in cr.Database.Tables)
{
li = tbl.LogOnInfo;
li.ConnectionInfo = ci;
tbl.ApplyLogOnInfo(li);
// check if logon was successful
// if TestConnectivity returns false, check logon credentials
if (tbl.TestConnectivity())
{
// drop fully qualified table location
if (tbl.Location.IndexOf(".") > 0)
{
tbl.Location = tbl.Location.Substring(tbl.Location.LastIndexOf(".") + 1);
}
else tbl.Location = tbl.Location;
}
else return(false);
}
return(true);
}
// The Logon method iterates through all tables
bool Logon(ReportDocument cr, string server, string db, string id, string pass)
{
ConnectionInfo ci = new ConnectionInfo();
SubreportObject subObj;
ci.ServerName = server;
ci.DatabaseName = db;
ci.UserID = id;
ci.Password = pass;
if (!ApplyLogon(cr, ci)) return (false);
foreach (ReportObject obj in cr.ReportDefinition.ReportObjects)
{
if (obj.Kind == ReportObjectKind.SubreportObject)
{
subObj = (SubreportObject)obj;
if (!ApplyLogon(cr.OpenSubreport(subObj.SubreportName), ci)) return(false);
}
}
return (true);
}
}


