水晶报表打开行集失败。

zsx123 2009-07-28 04:00:39
VS2005 C#+SQL2000 开发的Winform程序,使用的是VS2005自带的水晶报表开发工具。
报表rpt_PackingList.rpt作为内嵌的资源文件。
在开发PC上执行正常。但打包后再例外的PC上执行,可以显示ReprotViewer,但报错。错误如下:

“未实现。
详细资料:Error Code:0x
打开行集失败
文件C:\Docume~1\ADMINI~1\LOCALS~1\Temp\temp....{71331692-....}.rpt内出错:
尚未执行操作。”




关键代码如下:
Form3 MyFrm = new Form3();
MyFrm.ShowReport(txtPackinglistNo.Text, labAddress.Text, txtInvoiceNo.Text, labCustID.Text, labSoldTo.Text, labTel.Text, labFax.Text, tempDataSet);
MyFrm.Show();//ReprotViewer显示,显示后提示错误

public void ShowReport(string strListNo, string strAdd, string strInvoiceNo, string strCustID, string strSoldTo, string strTel, string strFax, DataSet DataSetMaiTou)
{
rpt_PackingList Myrpt_PackingList = new rpt_PackingList();
Myrpt_PackingList.SetDataSource(MyPackingList.ReadPackingList()); //ReadPackingList查询表,返回DataSet

this.CRV1.ReportSource = Myrpt_PackingList;

Myrpt_PackingList.ParameterFields["ListNo"].CurrentValues.AddValue(strListNo);
Myrpt_PackingList.ParameterFields["Add"].CurrentValues.AddValue(strAdd);
Myrpt_PackingList.ParameterFields["InvoiceNo"].CurrentValues.AddValue(strInvoiceNo);
Myrpt_PackingList.ParameterFields["CustID"].CurrentValues.AddValue(strCustID);
Myrpt_PackingList.ParameterFields["SoldTo"].CurrentValues.AddValue(strSoldTo);
Myrpt_PackingList.ParameterFields["Tel"].CurrentValues.AddValue(strTel);
Myrpt_PackingList.ParameterFields["Fax"].CurrentValues.AddValue(strFax);

Myrpt_PackingList.ParameterFields["Date"].CurrentValues.AddValue("Date: " + MySysFunction.GetEnglishShortMonth(DateTime.Now) + "." + DateTime.Now.Day + "," + DateTime.Now.Year);

}
...全文
480 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ly576107712 2010-10-09
  • 打赏
  • 举报
回复
看看了kankn
zsx123 2009-08-03
  • 打赏
  • 举报
回复
系统问题,换了一台电脑毛问题了
llsen 2009-07-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 babyt 的回复:]
又看了下代码,比较主贴和2楼的代码,产生了一个疑问

主贴的代码用的是PUSH模式,而2楼的代码用的是PULL模式
而代码变化的时候,你的模板并没有修改[/Quote]

这个昨天我也看到了
不过应该不是这个问题
看下面

[Quote=引用楼主 zsx123 的回复:]
在开发PC上执行正常。但打包后再例外的PC上执行,可以显示ReprotViewer,但报错。
[/Quote]
阿泰 2009-07-29
  • 打赏
  • 举报
回复
又看了下代码,比较主贴和2楼的代码,产生了一个疑问

主贴的代码用的是PUSH模式,而2楼的代码用的是PULL模式
而代码变化的时候,你的模板并没有修改

请问

你的报表制作的时候,用的是dataset数据集做数据源,还是直接连了数据库?
llsen 2009-07-29
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 babyt 的回复:]
使用PULL模式,在开发机上一般都会成功运行的。
但是挪了地方就不行了。
这个是因为机器的信任机制问题。


所以楼主应该用2楼的代码段,建议使用这种方式
http://topic.csdn.net/u/20090626/17/8090bf70-bed9-41ac-9e09-c0a6a7ab4cb8.html?86323
[/Quote]

又学了点
阿泰 2009-07-29
  • 打赏
  • 举报
回复
使用PULL模式,在开发机上一般都会成功运行的。
但是挪了地方就不行了。
这个是因为机器的信任机制问题。

所以楼主应该用2楼的代码段,建议使用这种方式
http://topic.csdn.net/u/20090626/17/8090bf70-bed9-41ac-9e09-c0a6a7ab4cb8.html?86323
llsen 2009-07-29
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zsx123 的回复:]
你的报表制作的时候,用的是dataset数据集做数据源,还是直接连了数据库?
=========================
做报表是先使用“数据库专家”--》创建新连接,在”OLE DB(ADo)“里建立和服务器的连接。
然后把表里的字段拖入报表里。
就是这样的。
[/Quote]
那就是Pull了,这个应该没什么问题
况且你能运行成功过
如果是混了,你就不会成功在开发机上
zsx123 2009-07-29
  • 打赏
  • 举报
回复
你的报表制作的时候,用的是dataset数据集做数据源,还是直接连了数据库?
=========================
做报表是先使用“数据库专家”--》创建新连接,在”OLE DB(ADo)“里建立和服务器的连接。
然后把表里的字段拖入报表里。
就是这样的。
llsen 2009-07-28
  • 打赏
  • 举报
回复
你安装个水晶报表试试
好像要安装的

或者简单的,你看那个rpt文件,能打开吗?
zsx123 2009-07-28
  • 打赏
  • 举报
回复
高手都来了!!!

阿泰。llsen 我照着”【水晶报表内功心法】--PULL模式样板招式“把你的代码帖到我程序里了。错误依旧。
可以肯定不是代码的问题。

难道是打包问题?系统问题?没其他电脑可以试了!!! 没辙了~~~

其他的机器上可以连上你的数据库吗?
==============
服务器是Server 2003。肯定可以连上。而且程序的其他功能模块也是要访问这个服务器的数据库的。


弱弱的问下,你运行的机器上安装水表了吗
=================================
打包部署不就是为了安装相应的组件吗?不会要整个水晶报表都安装一遍吧?

llsen 2009-07-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 babyt 的回复:]
其他的机器上可以连上你的数据库吗?
[/Quote]
连不上的话会出异常吧,起码水表提示登陆
阿泰 2009-07-28
  • 打赏
  • 举报
回复
其他的机器上可以连上你的数据库吗?
llsen 2009-07-28
  • 打赏
  • 举报
回复
弱弱的问下,你运行的机器上安装水表了吗
zsx123 2009-07-28
  • 打赏
  • 举报
回复
并且我设置的抛出异常都不会抓到任何错误。

弹出的错误提示框的标题是"Crystal Report Windows 窗体查看器“
内容是:
“未实现。
详细资料:Error Code:0x
打开行集失败
文件C:\Docume~1\ADMINI~1\LOCALS~1\Temp\temp....{71331692-....}.rpt内出错:
尚未执行操作。”
llsen 2009-07-28
  • 打赏
  • 举报
回复
水晶报表-阿泰

参考上面阿泰的水晶报表教程
llsen 2009-07-28
  • 打赏
  • 举报
回复
你用的pull模式

参数要预先在报表上加上去
水晶报表不支持动态参数
Myrpt_PackingList.ParameterFields["ListNo"].CurrentValues.AddValue(strListNo); //报表上的固定参数字段                Myrpt_PackingList.ParameterFields["Add"].CurrentValues.AddValue(strAdd); 
Myrpt_PackingList.ParameterFields["InvoiceNo"].CurrentValues.AddValue(strInvoiceNo);
Myrpt_PackingList.ParameterFields["CustID"].CurrentValues.AddValue(strCustID);
Myrpt_PackingList.ParameterFields["SoldTo"].CurrentValues.AddValue(strSoldTo);
Myrpt_PackingList.ParameterFields["Tel"].CurrentValues.AddValue(strTel);
Myrpt_PackingList.ParameterFields["Fax"].CurrentValues.AddValue(strFax);


这些错吧
zsx123 2009-07-28
  • 打赏
  • 举报
回复
关键是在开发电脑上安装运行都不会报错,但在其它客户电脑上就会报错。
我不知到是代码的问题,还是水晶报表打包的问题。

我打包时用的是CrystalReportsRedist2005_x86.msm这个合并模块。
zsx123 2009-07-28
  • 打赏
  • 举报
回复
不好意思,改来改去都乱了。这是调整后的代码,还是报同样的错误。
public void ShowReport(string strListNo, string strAdd, string strInvoiceNo, string strCustID, string strSoldTo, string strTel, string strFax, DataSet DataSetMaiTou)
{
try
{
rpt_PackingList Myrpt_PackingList = new rpt_PackingList();

Myrpt_PackingList.Database.Tables[0].LogOnInfo.ConnectionInfo.ServerName = "192.168.10.722";
Myrpt_PackingList.Database.Tables[0].LogOnInfo.ConnectionInfo.UserID = "sa";
Myrpt_PackingList.Database.Tables[0].LogOnInfo.ConnectionInfo.Password = "";
Myrpt_PackingList.Database.Tables[0].LogOnInfo.ConnectionInfo.DatabaseName = "lordManage";

Myrpt_PackingList.ParameterFields["ListNo"].CurrentValues.AddValue(strListNo); //报表上的固定参数字段 Myrpt_PackingList.ParameterFields["Add"].CurrentValues.AddValue(strAdd);
Myrpt_PackingList.ParameterFields["InvoiceNo"].CurrentValues.AddValue(strInvoiceNo);
Myrpt_PackingList.ParameterFields["CustID"].CurrentValues.AddValue(strCustID);
Myrpt_PackingList.ParameterFields["SoldTo"].CurrentValues.AddValue(strSoldTo);
Myrpt_PackingList.ParameterFields["Tel"].CurrentValues.AddValue(strTel);
Myrpt_PackingList.ParameterFields["Fax"].CurrentValues.AddValue(strFax);

Myrpt_PackingList.ParameterFields["Date"].CurrentValues.AddValue("Date: " + MySysFunction.GetEnglishShortMonth(DateTime.Now) + "." + DateTime.Now.Day + "," + DateTime.Now.Year);

this.CRV1.ReportSource = Myrpt_PackingList;

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误333", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

报表上的是OLE DB(ADO)链接,已经在报表上设置了数据库连接,只要报表从数据库表里读数据出来就可以了。
llsen 2009-07-28
  • 打赏
  • 举报
回复
貌似你没加载报表

string strPath = "报表路径";
rpt_PackingList Myrpt_PackingList = new rpt_PackingList();
换位弱类型报表
ReportDocument Myrpt_PackingList = new ReportDocument ();
Myrpt_PackingList.Load(strPath);
Myrpt_PackingList.SetDataSource(...)


关键是下面
水晶报表不支持动态加参数
这些参数要你在报表文档上事先加上,然后运行时候只是赋值
Myrpt_PackingList.SetParameters("参数名","参数值");


最后
this.CRV1.ReportSource = Myrpt_PackingList; 

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧