Как заставить ваш CrystalDecision работать для вашего отчета? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть логи c и я хочу загрузить свой отчет. Я использую CrystalDecision, чтобы сделать это в asp. net mvc. Ниже приведены некоторые разработанные классы, в которых нет ошибок и не отображается загрузка. Я отладил его не получить к моему объекту контроллера, как Server.MapPath. Я думаю, что до сих пор, возможно, факт, что я обращаюсь к этому через сервер с этим именем объекта, то есть мой sql сервер указывает на локальное соединение с БД. Пожалуйста, помогите товарищам.

// Controller
 [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult AdvertReport(FormCollection fc)
        {
            DataSet ds = obIlReports.Generate_AdvertDetailsReport();
            ds.Tables[0].TableName = "DtTest";

            if(ds.Tables[0].Rows.Count > 0)
            {
                ReportClass rptH = new ReportClass();
                rptH.FileName = Server.MapPath("-/Reports/AdvertReport.rpt");// Not hit here when i debug
                rptH.Load();
                rptH.SetDataSource(ds.Tables[0]);
                Response.Buffer = false;
                Response.ClearContent();
                Response.ClearHeaders();


                Stream stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
                stream.Seek(0, SeekOrigin.Begin);
                return File(stream, "application/pdf", "AdvertReport.pdf");
            }
            return View();
        }
    }
//Reports
public class ReportsMaster : IlReports
    {
        public DataSet Generate_AdvertDetailsReport()
        {
            using(SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["eNtsaOnlineRegistrationDB"].ToString()))
            {
                con.Open();
                DataSet ds = new DataSet();

                // Handling Exception
                try
                {
                    SqlCommand cmd = new SqlCommand("GetAdvertReport", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = cmd;
                    da.Fill(ds);

                    if(ds.Tables.Count > 0)
                    {
                        return ds;
                    }
                    else
                    {
                        return ds = null;
                    }

                }
                catch(Exception )
                {
                    throw;
                }
                finally
                {
                    ds.Dispose();
                }
            }
        }

//View.cshtml
<div class="container">
    <div style="margin-top:10px"></div>
    <fieldset>
        <legend class="legend">eNtsa-Events Advert Download</legend>
        <div class="panel">
            <div class="panel-body">
                @using(Html.BeginForm("AdvertReport", "AdvertReport", FormMethod.Post))
                {
                    @Html.AntiForgeryToken()
                    <div style="margin-top:5px"></div>
                    <div class="row">
                        <div class="col-md-6">
                            eNtsa-Events Advertisement :-
                        </div>
                        <div class="col-md-6">
                            <input id="submitval" class="btn btn-success" type="submit" name="actionType" value="Download" />
                        </div>
                    </div>
                    <div style="margin-top: 5px"></div>
                }

            </div>
        </div>


    </fieldset>

</div>

// ConnectionString

<connectionStrings>
    <add name="eNtsaOnlineRegistrationDB" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\eNtsaOnlineRegistrationDB.mdf;Initial Catalog=eNtsaOnlineRegistrationDB; Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>
...