【】【】求救,达人指导一下哈。~~~~~水晶报表导出 出错

程序可以让尸体动起来 2010-07-17 09:42:58
已经做好了水晶报表,并且查看的时候是正常的。

问题:
1、点击导出的时候,选择了随便某个格式,点击导出,则出现如下错误

“/报表打印测试”应用程序中的服务器错误。
--------------------------------------------------------------------------------

拒绝访问。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Runtime.InteropServices.COMException: 拒绝访问。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:


[COMException (0x80004005): 拒绝访问。
]






我查找了相关资料,有的说权限问题。有的说配置问题。我在web.config 加了一句

<identity impersonate="true" userName="administrator" password="123"/>

也不管用

我把匿名账户,asp.net都放到管理员组。也不行。





怀疑是com+权限问题?

求高手解答一下哈
...全文
165 点赞 收藏 23
写回复
23 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
阿泰 2010-07-17
水晶报表目前就是这样的处理方式,手工画的线导出Excel的时候是不显示的。
所以要导出到Excel就要用边框来实现

当然,也可以导出到pdf或word文档,这样的话就是有线条的。
回复
还一个问题:导出后没有了网格线,如何处理呢?您的文章看过了,不过我是手画的格子。为啥手画的不显示网格呢
回复
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if(Session["temp"]==null)
viewCrystalReport();
else
this.crView.ReportSource=(ReportDoucement)Session["temp"];
}

}





protected void viewCrystalReport()
{
//生成测试数据
DataTable dt = this.getReportData();
//载入设计好的报表到报表源
ReportDocument ocr= new ReportDocument(Server.MapPath("report_fjljcnyxhbb.rpt"));
//将数据绑定
ocr.SetDataSource(dt);
//设置自定义参数
ocr.SetParameterValue("txt_jvname", "xx铁路局");
ocr.SetParameterValue("txt_duanName", "xx段");
ocr.SetParameterValue("txt_date", DateTime.Now.Year.ToString() + "年" + DateTime.Now.Month.ToString() + "月");
//显示报表
this.crView.ReportSource=ocr;
//或加上crView.Databind(); or ocr.DataBind();
Session["temp"]=ocr;

private DataTable getReportData()
{
//生成临时表
DataTable dt = new DataTable();
//表名称,随便写
dt.TableName = "myTable";
//这里的列名称,一定要跟 对应的xsd ,这里就是 xsd_fjljcnyxhbb_Ds.xsd 的列名一致。否则绑定不上
dt.Columns.Add("jx", System.Type.GetType("System.String"));
dt.Columns.Add("yszb", System.Type.GetType("System.String"));
for (int i = 0; i < 19; i++)
{
DataRow dr = dt.NewRow();
dr["jx"] = "机型" + (i+1);
dr["yszb"] = "种别" + (i+1);
dt.Rows.Add(dr);
}
return dt;
}

}

用下这种格式,我一般不喜欢用ReportSource,用不好老出问题
回复
段传涛 2010-07-17
[Quote=引用 19 楼 junzhang4008 的回复:]
引用 12 楼 babyt 的回复:
有时候能,有时候不行的,这个频度大概有多少呢,比如5次出现一次或者50次出现一次呢?

如果设置权限不行的话,建议(定期)清理temp目录,(定期)重启IIS看看



目前好了。把temp目录设置权限了。


还一个问题:导出后没有了网格线,如何处理呢?您的文章看过了,不过我是手画的格子。为啥手画的不显示网格呢
[/Quote]
这个不好确定,如果用系统 把我上面说的文件夹复制过去就可以,因为它调用好多本地文件。
还有方法; 在c盘里netframework下的2.0 下面的 那个crystalreport coyp to server
回复
引用 12 楼 babyt 的回复:
有时候能,有时候不行的,这个频度大概有多少呢,比如5次出现一次或者50次出现一次呢?

如果设置权限不行的话,建议(定期)清理temp目录,(定期)重启IIS看看



目前好了。把temp目录设置权限了。


还一个问题:导出后没有了网格线,如何处理呢?您的文章看过了,不过我是手画的格子。为啥手画的不显示网格呢
回复
貌似清空了temp目录又好了
回复
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
viewCrystalReport();
}

}





protected void viewCrystalReport()
{
//生成测试数据
DataTable dt = this.getReportData();
//载入设计好的报表到报表源
this.crSource.Report.FileName = Server.MapPath("report_fjljcnyxhbb.rpt");
//将数据绑定
this.crSource.ReportDocument.SetDataSource(dt);
//设置自定义参数
this.crSource.ReportDocument.SetParameterValue("txt_jvname", "xx铁路局");
this.crSource.ReportDocument.SetParameterValue("txt_duanName", "xx段");
this.crSource.ReportDocument.SetParameterValue("txt_date", DateTime.Now.Year.ToString() + "年" + DateTime.Now.Month.ToString() + "月");
//显示报表
this.crView.ReportSourceID = "crSource";
}

private DataTable getReportData()
{
//生成临时表
DataTable dt = new DataTable();
//表名称,随便写
dt.TableName = "myTable";
//这里的列名称,一定要跟 对应的xsd ,这里就是 xsd_fjljcnyxhbb_Ds.xsd 的列名一致。否则绑定不上
dt.Columns.Add("jx", System.Type.GetType("System.String"));
dt.Columns.Add("yszb", System.Type.GetType("System.String"));
for (int i = 0; i < 19; i++)
{
DataRow dr = dt.NewRow();
dr["jx"] = "机型" + (i+1);
dr["yszb"] = "种别" + (i+1);
dt.Rows.Add(dr);
}
return dt;
}

}
回复
把你的代码贴出来看看?
回复
“/print”应用程序中的服务器错误。
--------------------------------------------------------------------------------

拒绝访问。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Runtime.InteropServices.COMException: 拒绝访问。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:


[COMException (0x80004005): 拒绝访问。
]
CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +95
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +271

[CrystalReportsException: 加载报表失败。]
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +334
CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) +893
CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename) +84
CrystalDecisions.ReportSource.NonHTTPCachedReportSource.GetReport(RequestContext context, Boolean bAddToCacheWhenCreated) +645
CrystalDecisions.ReportSource.LocalReportSourceBase.GetReportInfo(RequestContext reqContext) +78
CrystalDecisions.Web.ReportAgentBase.GetReportInfo() +1022
CrystalDecisions.Web.ReportAgentBase.get_IsLogOnInfoUsingIntegratedSecurity() +58
CrystalDecisions.Web.ReportAgentBase.FillReportState(RequestContext request) +67
CrystalDecisions.Web.CrystalReportViewer.OnExport() +1044
CrystalDecisions.Web.CrystalReportViewer.RaisePostBackEvent(String eventArgument) +56
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565




--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.3603; ASP.NET 版本:2.0.50727.3053
回复
晕,又出现了

拒绝访问。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Runtime.InteropServices.COMException: 拒绝访问。
回复
[Quote=引用 12 楼 babyt 的回复:]
有时候能,有时候不行的,这个频度大概有多少呢,比如5次出现一次或者50次出现一次呢?

如果设置权限不行的话,建议(定期)清理temp目录,(定期)重启IIS看看
[/Quote]


目前好了。把temp目录设置权限了。


还一个问题:导出后没有了网格线,如何处理呢?您的文章看过了,不过我是手画的格子。为啥手画的不显示网格呢
回复
阿泰 2010-07-17
有时候能,有时候不行的,这个频度大概有多少呢,比如5次出现一次或者50次出现一次呢?

如果设置权限不行的话,建议(定期)清理temp目录,(定期)重启IIS看看
回复
实在不行,就自己写导出一个导出按钮:
可参考:http://blog.pfan.cn/mimengjiangnan/24350.html
回复
段传涛 2010-07-17
[Quote=引用 7 楼 junzhang4008 的回复:]
搞定了。temp目录加上权限


可是为啥一开始我就把 asp.net ,匿名账号加到管理员组。最后还是不行。
[/Quote]
文件夹也权限限制
回复
还一个问题:导出后没有了网格线,如何处理呢?阿泰的文章看过了,不过我是手画的格子。为啥手画的不显示网格呢
回复
搞定了。temp目录加上权限


可是为啥一开始我就把 asp.net ,匿名账号加到管理员组。最后还是不行。



回复
IIS匿名访问的帐号加到administrator组
回复
段传涛 2010-07-17
如果还不行 就修改config 配置 加进 管理员配置。
回复
段传涛 2010-07-17
一般情况下,xp装了水晶报表后,打印的时候都出现这个错误“System.Runtime.InteropServices.COMException 拒绝访问”。网上找了一大顿资料都是提问没有人回答。结果弄了很久终于找到原因,就是要把IIS匿名访问的帐号加到administrator组,这样就可以显示水晶报表的内容了。
回复
加载更多回复
相关推荐
发帖
图表区
创建于2007-09-28

4810

社区成员

.NET技术 图表区
申请成为版主
帖子事件
创建了帖子
2010-07-17 09:42
社区公告
暂无公告