/Reports/PrintReport.aspx.cs

http://github.com/khaneh/Orders · C# · 146 lines · 115 code · 20 blank · 11 comment · 9 complexity · 0abae52d6f84e7fbd827c8a9aa4429e1 MD5 · raw file

  1. using System;
  2. using System.Data.SqlClient;
  3. using CrystalDecisions.CrystalReports.Engine;
  4. using CrystalDecisions.Shared;
  5. using CrystalDecisions.Web;
  6. namespace Reports
  7. {
  8. /// <summary>
  9. /// Summary description for PrintReport.
  10. /// </summary>
  11. public class PrintReport : System.Web.UI.Page
  12. {
  13. protected GeneralReport report = null;
  14. protected ParameterFields parameterFields = new ParameterFields ();
  15. protected int reportLogID=0;
  16. private void Page_Load(object sender, System.EventArgs e)
  17. {
  18. string errors="";
  19. string returnURL="";
  20. string reportName="";
  21. char failed='0';
  22. try
  23. {
  24. reportLogID = Int32.Parse(Request.QueryString.ToString());
  25. }
  26. catch
  27. {
  28. errors+="Invalid ReportNumber\n<br>";
  29. }
  30. string[] strParameterNames=new string[] {};
  31. string[] strParameterValues=new string[] {};
  32. //SqlConnection conn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=sefareshat");
  33. SqlConnection conn = new SqlConnection("data source=appserv;initial catalog=sefareshat;password=5tgb;persist security info=True;user id=sefadmin;workstation id=appserv;packet size=4096");
  34. conn.Open();
  35. SqlCommand sqlCommand = new SqlCommand();
  36. sqlCommand.Connection=conn;
  37. sqlCommand.CommandText="SELECT ReportFileName,ReportParameterNames,ReportParameterValues,ReturnURL FROM ReportLog WHERE ID='"+ reportLogID +"' AND Checked=0";
  38. SqlDataReader dr = sqlCommand.ExecuteReader();
  39. if (dr.Read())
  40. {
  41. reportName=dr.GetString(0);
  42. report=new GeneralReport(reportName);
  43. string tmpParameterNames=dr.GetString(1);
  44. string tmpParameterValues=dr.GetString(2);
  45. returnURL=dr.GetString(3);
  46. if(tmpParameterNames!="")
  47. {
  48. strParameterNames=tmpParameterNames.Split((char)1);
  49. strParameterValues=tmpParameterValues.Split((char)1);
  50. }
  51. }
  52. else
  53. {
  54. errors+="No such Report\n<br>";
  55. }
  56. dr.Close();
  57. try
  58. {
  59. for (int i=0; i<strParameterNames.Length; i++)
  60. {
  61. ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
  62. ParameterField paramField = new ParameterField ();
  63. paramField.ParameterFieldName = strParameterNames[i];
  64. discreteVal.Value = strParameterValues[i];
  65. paramField.CurrentValues.Add (discreteVal);
  66. parameterFields.Add (paramField);
  67. }
  68. }
  69. catch
  70. {
  71. errors+="Invalid Report Parameters...\n<br>";
  72. }
  73. string printerName=Util.choosePrinter(Request.UserHostAddress,reportName);
  74. if(! Print(printerName))
  75. errors+="Cannot Print Report...\n<br>";
  76. if (errors!="")
  77. {
  78. failed='1';
  79. Response.Write(errors);
  80. }
  81. sqlCommand.CommandText="UPDATE ReportLog Set Checked='1',Printed='1',Failed='"+failed+"',ErrorDescription=N'"+ Util.sqlSafe(errors) +"',PrinterName='"+ Util.sqlSafe(printerName)+"' WHERE (ID='"+ reportLogID +"') AND (Printed=0) ";
  82. sqlCommand.ExecuteNonQuery();
  83. conn.Close();
  84. if (report!=null) report.Dispose();
  85. if (returnURL!="" && errors=="")
  86. Response.Redirect(returnURL,true);
  87. Response.End();
  88. }
  89. private bool Print(string PrinterName)
  90. {
  91. bool success=true;
  92. try
  93. {
  94. for (int i=0; i<report.DataDefinition.ParameterFields.Count; i++)
  95. {
  96. report.DataDefinition.ParameterFields[i].ApplyCurrentValues(parameterFields[i].CurrentValues);
  97. }
  98. report.PrintOptions.PrinterName = PrinterName;
  99. report.PrintToPrinter(1,false,1,99);
  100. }
  101. catch
  102. {
  103. success=false;
  104. }
  105. return success;
  106. }
  107. #region Web Form Designer generated code
  108. override protected void OnInit(System.EventArgs e)
  109. {
  110. //
  111. // CODEGEN: This call is required by the ASP.NET Web Form Designer.
  112. //
  113. InitializeComponent();
  114. base.OnInit(e);
  115. }
  116. /// <summary>
  117. /// Required method for Designer support - do not modify
  118. /// the contents of this method with the code editor.
  119. /// </summary>
  120. private void InitializeComponent()
  121. {
  122. this.Load += new System.EventHandler(this.Page_Load);
  123. }
  124. #endregion
  125. }
  126. }