-1

嗨朋友我已经创建了一个带参数的水晶报表,它在源代码中执行时成功运行,但在 IIS 之后配置时它没有加载,它显示错误,如无法连接登录参数。请检查我的代码并纠正我。

嗨朋友,如果我评论 oStream = (MemoryStream)reportdocument.ExportToStream(ExportFormatType.PortableDocFormat); 这一行和 Response.BinaryWrite(oStream.ToArray()); 此报告是在 IIS 中生成的,但我没有得到正确的 pdf 格式请帮助我,我想以 pdf 格式生成请指导我

public partial class frm_MRPrint : System.Web.UI.Page
{
    SqlConnection Con = new SqlConnection(ConfigurationManager.AppSettings["conn"].ToString());
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            mr();
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {

        MemoryStream oStream;
        Response.Clear();
        Response.Buffer = true;


        ReportDocument reportdocument = new ReportDocument();

        reportdocument.Load(Server.MapPath("MR.rpt"));
        reportdocument.SetDatabaseLogon("sa", "Admin123", "vivek", "PURCHASE");

        reportdocument.SetParameterValue("MRNO", ddlmrno.SelectedItem.Text);

        CrystalReportViewer1.ReportSource = reportdocument;

        oStream = (MemoryStream)reportdocument.ExportToStream(ExportFormatType.PortableDocFormat);
        Response.ContentType = "application/pdf";
        try
        {

            //write report to the Response stream

            Response.BinaryWrite(oStream.ToArray());

            Response.End();

        }

        catch (Exception ex)
        {
            Label2.Visible = true;
            Label2.Text = "ERROR:" + Server.HtmlEncode(ex.Message.ToString());


        }

        finally
        {

            //clear stream

            oStream.Flush();

            oStream.Close();

            oStream.Dispose();

        }

        //in case you want to export it as an attachment use the line below

        //crReport.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Your Exported File Name");

    }

    public void mr()
    {

        ddlmrno.Items.Clear();
        ListItem frstitem = new ListItem();
        frstitem.Text = "- Select -";
        ddlmrno.Items.Add(frstitem);
        ddlmrno.SelectedIndex = 0;
        Con.Open();
        string sql = "";
        sql = "select  distinct(MRNO) from dbo.tbl_KKSMR where status=1 order by MRNO asc";
        SqlCommand cmd = new SqlCommand(sql, Con);
        SqlDataReader rdr;
        try
        {
            rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {

                ListItem newItem = new ListItem();
                newItem.Text = rdr["MRNO"].ToString().Trim();
                newItem.Value = rdr["MRNO"].ToString().Trim();
                ddlmrno.Items.Add(newItem);
            }
            rdr.Close();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
        finally
        {
            cmd.Dispose();

        } Con.Close();

    }
}
4

4 回答 4

0

这是一个访问问题。在你的 web.config

<identity impersonate="true|false" 
          userName="domain\username"
          password="password"/>

给管理员凭据。并为您的项目文件夹提供适当的权限。它将起作用。

于 2013-04-19T08:33:18.547 回答
0

这是 Aspx 文件......

 <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" 
                    AutoDataBind="true" oninit="CrystalReportViewer1_Init"  />

这是cs文件……

      using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Web.UI;
        using System.Web.UI.WebControls;
        using System.Reflection;
        using CrystalDecisions.CrystalReports.Engine;
        using CrystalDecisions.Shared;
        using CrystalDecisions.Reporting;
        using CrystalDecisions;
        using System.Data.SqlClient;
        using System.Data;
        using BusinessAccessLevel;
        using BusinessAccessLevel.Masters;

        namespace TexERP.ReportCrystal.Sales
        {
            public partial class CityReportCry : System.Web.UI.Page
            {
                ReportDocument doc;
            }

         protected void btnShowReport_Click(object sender, EventArgs e)
                {
                    OldLoadReport();            
                }

              private void OldLoadReport()
                {
                    doc = new ReportDocument();
                    doc.Load(Server.MapPath("MR.rpt"));
               doc.SetDatabaseLogon("sa", "Admin123", "vivek", "PURCHASE", false);
               reportdocument.SetParameterValue("@MRNO", ddlmrno.SelectedValue);
                CrystalReportViewer1.ReportSource = doc;
                }

                protected void CrystalReportViewer1_Init(object sender, EventArgs e)
                {
                    OldLoadReport();
                }
            }
        }

直接导出为 .Pdf 的代码

                ExportOptions CrExportOptions ;
                DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
                PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
                CrDiskFileDestinationOptions.DiskFileName = "c:\\csharp.net-informations.pdf";
                CrExportOptions = doc.ExportOptions;
                {
                    CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                    CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                    CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
                    CrExportOptions.FormatOptions = CrFormatTypeOptions;
                }
                doc.Export();
于 2013-04-24T06:03:17.817 回答
0

此配置部分不能在此路径中使用。当该部分锁定在父级别时会发生这种情况。锁定是默认情况下 (overrideModeDefault="Deny") 或由具有 overrideMode="Deny" 或旧 allowOverride="false" 的位置标记显式设置的。

于 2016-02-08T07:33:34.607 回答
0

对于遇到相同问题的任何人,还要检查您的报告的数据源提供程序是否为“SQL Native Client”。如果是,这在您没有安装 SQL 客户端的生产服务器中不起作用。它必须是“SQLOLEDB”,因为它可以在没有安装 SQL 客户端的机器上工作。

这就是为什么我的报告在我的测试服务器(具有 SQL 服务器客户端)上工作而在我的生产服务器上不起作用的原因。

在某些情况下,它与登录凭据无关。Crystal 报告在无法与您指定的提供者通信时会给出该错误。

于 2016-06-17T16:15:40.107 回答