阿泰的软件实用主义

水晶报表/BOE

博客园 首页 新随笔 联系 订阅 管理
  176 Posts :: 9 Stories :: 2046 Comments :: 38 Trackbacks

有问题请在此贴跟贴回复,我亦会在此贴回复。

 

请不要到无关的帖子中跟帖

 

请尽量描述清楚你的问题和需要

posted on 2008-08-15 16:56 阿泰 阅读(436) 评论(66)  编辑 收藏 网摘 所属分类: A_Blog通告水晶报表资源

Feedback

博主你好,我想问下如何让文本对象内的文本不但水平居中,而且垂直方向上也要居中。
  回复  引用    

#2楼  2008-08-18 09:18 @zhanglei [未注册用户]
阿泰你好,有一个问题请教,内容如下:
有一个主报表a,它包含子报表b1 和 子报表b2,子报表b1要求纵向打印,子报表b2要求横向打印,怎么设置?我发现通过“编辑子报表”->在子报表中右键,然后选择“页面设置”-> 在"方向" 中选择“纵向”或“横向”打印,结果先在子报表b1设置了“纵向”,再在子报表b2设置了“横向”,发现子报表b1也变为“纵向”了,好像通过”页面设置“不能设置子报表的打印方向,”页面设置“ 只是针对主报表的,对子报表不起作用。

我要求是,在主报表按”打印预览“ 时子报表b1 是纵向的,子报表b2是横向的。因为子报表b1要表一个,表头 有很多列,表头在页眉中,横向打印放不下,且表体在”详细资料“中, 行数不确定,。
  回复  引用    

#3楼 [楼主] 2008-08-18 09:45 阿泰      
@elvaxiao(1楼)
水晶报表的文本对象没有此属性。
垂直居中可以通过在顶部加空行的形式来模拟实现,但不够精确。

  回复  引用  查看    

#4楼 [楼主] 2008-08-18 09:48 阿泰      
@@zhanglei(2楼)
在前一帖子中已经回答过了,水晶报表实现不了你的这个要求。
要全部打印出来,还是要把整个报表调整到需要的最宽宽度才行。
  回复  引用  查看    

#5楼  2008-08-18 13:09 cesc [未注册用户]
阿泰,你好,请教个问题
交叉表,求百分比,用公式实现了每一行的百分比,但最后一行总计显示的是百分比之和,如何让其实现总计的百分比.
谢谢
  回复  引用    

#6楼 [楼主] 2008-08-18 16:29 阿泰      
@cesc(5楼)

参见:http://www.cnblogs.com/babyt/archive/2008/08/18/1270353.html

  回复  引用  查看    

#7楼  2008-08-19 15:41 露为霜 [未注册用户]
阿泰,请教一个问题。
我想把两个不相关的报表和在一起,我是这样做的。在主报表增加一个报表页脚b,将子报表放到此处。
我的主报表有页眉、详细、汇总内容。这样导致子报表显示的那页也有一个页眉,但是没有主报表的详细内容。不知道这种情况该如何处理?谢谢。
  回复  引用    

#8楼  2008-08-19 15:43 露为霜 [未注册用户]
--引用--------------------------------------------------
露为霜: 阿泰,请教一个问题。
我想把两个不相关的报表和在一起,我是这样做的。在主报表增加一个报表页脚b,将子报表放到此处。
我的主报表有页眉、详细、汇总内容。这样导致子报表显示的那页也有一个页眉,但是没有主报表的详细内容。不知道这种情况该如何处理?谢谢。
--------------------------------------------------------
我的意思是在子报表的那页不需要显示主报表的页眉,能做到吗?
  回复  引用    

#9楼  2008-08-19 16:00 露为霜 [未注册用户]
阿泰,再请教一个问题。
如何让水晶报表导出的文件不分页?我是导出成Excel97格式。谢谢。
  回复  引用    

#10楼 [楼主] 2008-08-19 16:34 阿泰      
@露为霜

7楼、8楼

子报表放在报表页脚上,则肯定显示在最后一条记录之后。

在节专家中设置页眉和页脚,勾选抑制显示,编辑公式为onlastrecord

9楼
如果你是用界面上的控件导出而不是代码的话,
导出选项中的导出页眉页脚,选【每个报表一次】,不勾选每页显示分页符,
就能导成一页。

  回复  引用  查看    

#11楼  2008-08-21 09:45 露为霜 [未注册用户]
--引用--------------------------------------------------
阿泰: @露为霜

9楼
如果你是用界面上的控件导出而不是代码的话,
导出选项中的导出页眉页脚,选【每个报表一次】,不勾选每页显示分页符,
就能导成一页。

--------------------------------------------------------

我用的是9.2版本,似乎没有这个选项。
只能把导出页眉页脚这个选项不选,才能导出一个不分页的报表。那样我的报表明细标题似乎要移到报表页眉才行了:)

  回复  引用    

阿泰,您好.以前看到你一篇关于spreadsheet控件的文章,写的是最基本的内容,收获很大.现在做的一个东西用到了非常多的spreadsheet控件,想问你一些关于该控件的一些问题:
1)现在需要把控件的单元格与SQL2005数据库对应起来.通过日期查询出该日的数据表,反应在spreadsheet中.
2)当对spreadsheet做出修改后,保存后,同样把对应的数据库表改掉.
3)当我在键盘上输入字母"P"时,让数据库中的book表记录字母"P"和按下字母时的时刻.应该如何实现呢?

由于我对VB也不熟悉,希望能告知以上3点的实现方法,希望越详细越通俗越好不胜感激.
  回复  引用    

最近小弟要做一个项目,要求用水晶报表实现对数据的统计和打印功能,做的是C/S版的,开发语言是C#.现在这个项目要求我实现的功能是:在winform上选择一个字段,比如是a,然后生成关于这个字段的水晶报表,如果是B,则生成关于B字段的.其实也就是一种动态显示.现在生成表这个我已经能够做到了,但是当我把图加在里面以后就出现错误了.无论是线状图.饼状图都不能实现.现在我做的这个项目中对有些数据只要求生成图,而不要表.我无法实现啊...希望阿泰兄看见以后能够给我个例子,谢谢
  回复  引用    

#14楼 [楼主] 2008-08-21 16:09 阿泰      
@fredrickhu (13楼)

请参考
http://www.cnblogs.com/babyt/archive/2008/01/22/1049234.html

  回复  引用  查看    

#15楼 [楼主] 2008-08-21 16:21 阿泰      
@风吹小屁屁(12楼)

你的这几个要求用spreadsheet似乎不是很合适,直接用datagrid更好些。
不过建议你自己多研究研究,呵呵。因为我的电脑上没有VB6这样的环境了。
要是我做的话,基本上是这样的:

1)根据查询条件从数据库生成一个recordset,逐格填充spreadsheet
2)将修改后的数据根据每一行的一个唯一性标志位,逐行去更新数据库
3)这个要监控keypress事件,出发时回写数据库即可。

希望你自己先多试试

  回复  引用  查看    

#16楼 [楼主] 2008-08-21 16:22 阿泰      
@露为霜(11楼)

很久没用CR9了,我现在一直用CR XI,所以可能有不少一样的地方,希望你的方法能解决你的问题 :)

  回复  引用  查看    

#17楼  2008-08-22 10:24 露为霜 [未注册用户]
再向阿泰请教一个问题。
我用水晶报表9.2直接导出Excel的时候,有一个列宽选项是“基于下列区域内对象的列宽度”,然后右边有一个下拉框,可以选择“整个报表”。
但用程序来做的时候,我是这样设置的:
objRPT.ExportOptions.ExcelUseConstantColumnWidth = False
objRPT.ExportOptions.ExcelAreaType = crReportFooter
其中ExcelAreaType没有一个属性值是对应整个报表的。这个觉得比较困惑。不知阿泰有没有碰到过这个问题?谢谢。
  回复  引用    

我用的是CR XI,还是不能实现啊,你给我的例子是CR 9的,我现在的要求是动态生成图(不是表),正如我上面说的,选a,生成a的图,选b,则生成b的图,请指点一二,谢谢
  回复  引用    

#19楼 [楼主] 2008-08-22 10:34 阿泰      
@fredrickhu

对那篇文章里的功能来说,CRXI和CR9没有任何差别。
对于实现的效果,可能是我理解错了你的意思吧,呵呵。
  回复  引用  查看    

能不能给我一个实例看看???我用的是C#,小弟对这个有点困惑.因为我接触水晶报表不久.动态生成图的.用winform做的.如果可能的话发到我邮箱,好吗?
  回复  引用    

忘记告诉你了.我用的是VS 2005自带的水晶报表
  回复  引用    

#22楼 [楼主] 2008-08-22 10:52 阿泰      
@fredrickhu (20/21楼)

这种实例自然是没有的,就我现在的理解,之前的那篇文章应该可以实现你想要的效果。但看来是我理解错了。但对于一个字段(也就是所说的选a生成a图,选b生成b图),怎么能生成图表呢?
所以请你仔细描述一下你的要求,从最初的来源表、字段,到如何选择某些字段,用那些字段生成一个什么样的图表,横轴是什么,纵轴是什么,这样我才有可能去做一个合乎你要求的实例。不做最早也要下周一前。


  回复  引用  查看    

那不如这样 我把我做的东西发给你看看,然后再说 好吗?
  回复  引用    

这个上面怎么发图啊?
  回复  引用    

#25楼 [楼主] 2008-08-22 11:14 阿泰      
@露为霜(17楼)

实际上,导出的那个界面上的“整个报表”其实是不起作用的。
选这个的时候,其实什么都没有变,
你导出的时候选不同的区域对比一下就知道了。
固定列宽,只能是到以某个区域为准,而不可能以整个报表为准。
这个你可以想一下,不同区域的“格”是上下排列的,但肯定不是完全的左右对齐,会有偏差
即使有时候肉眼感觉不出来。

用Excel格式导出完美表格的唯一方法请参考以下文章,N年的实战成果,呵呵
http://www.cnblogs.com/babyt/archive/2008/04/04/1137345.html
  回复  引用  查看    

#26楼  2008-08-22 13:53 露为霜 [未注册用户]
--引用--------------------------------------------------
阿泰: @露为霜(17楼)

用Excel格式导出完美表格的唯一方法请参考以下文章,N年的实战成果,呵呵
<a href="http://www.cnblogs.com/babyt/archive/2008/04/04/1137345.html" target="_new">http://www.cnblogs.com/babyt/archive/2008/04/04/1137345.html</a>
--------------------------------------------------------
呵呵,这篇文章我已经拜读过,和我目前的作法是完全一致的!

但导出宽度以“整个报表”为准是有用的!为什么这样说呢?首先我用水晶报表直接导出Excel,选择整个报表,Excel中的样式和报表设计样式是一致的。有些表格非常窄,有些又很宽,说明不是等宽,而是为了完成报表样式而设置的。
但我用代码导出时,由于没有“整个报表”对应的属性值,所以我每个属性值都试过,但都没有用报表直接导出时那么完美,所以有此一问。不知道是否这些属性值能不能采取“或”的方式组合呢?还是水晶报表9.2就有此bug,呵呵。


  回复  引用    

#27楼 [楼主] 2008-08-22 15:26 阿泰      
@露为霜 (26楼)

我说的“不起作用”其实跟你描述的是一样的。呵呵。
属性值不能是or关系,只以最后一个为准。
这也不能说是BUG,CR11里面也没有整个报表的项目。
一般情况应该使用crDetail这个常量。但要达到100%的原样,好像不行。

  回复  引用  查看    

我的数据表 SQL server 2000 :
Adress data1 temperature
a 2007-1-1 8
a 2007-2-1 12
a 2007-3-1 15
a 2007-4-1 16
a 2007-5-1 20
b 2007-1-1 7
b 2007-2-1 10
b 2007-3-1 13
b 2007-4-1 14
b 2007-5-1 18

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace CrystalReports
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)
{
ReportData.GetAdree(this.toolStripComboBox1);
}

private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//MessageBox.Show(toolStripComboBox1.SelectedItem.ToString());
ReportData.ReportHOSTSN(this.crystalReportViewer1, toolStripComboBox1.SelectedItem.ToString());

}
}
}
  回复  引用    

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Windows.Forms;

namespace CrystalReports
{
class ReportData
{
private static string strMessage;
private static SqlConnection objConnection = GetData.GetConnection();
private static SqlDataAdapter objAdapter;
private static DataSet objDataset;

public static DataSet GetAssets()
{

try
{
objConnection.Open();
strMessage = "select Adress,date1,temperature from table1";
objAdapter = new SqlDataAdapter(strMessage, objConnection);
objDataset = new DataSet();
objDataset.Clear();
objDataset.Dispose();
objAdapter.Fill(objDataset, "Adress");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
objConnection.Close();
}
return objDataset;
}
public static DataSet GetAssets2()
{

try
{
objConnection.Open();
strMessage = "select Adress from table1 group by Adress ";
objAdapter = new SqlDataAdapter(strMessage, objConnection);
objDataset = new DataSet();
objDataset.Clear();
objDataset.Dispose();
objAdapter.Fill(objDataset, "Adress");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
objConnection.Close();
}
return objDataset;
}
public static DataSet GetAssets3(string Adress)
{

try
{
objConnection.Open();
strMessage = "select Adress,date1,temperature from table1 where Adress like '" + Adress + "'";
objAdapter = new SqlDataAdapter(strMessage, objConnection);
objDataset = new DataSet();
objDataset.Clear();
objDataset.Dispose();
objAdapter.Fill(objDataset, "Adress");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
objConnection.Close();
}
return objDataset;
}

public static void GetAdree(ToolStripComboBox box)
{
GetAssets2();
for (int i = 0; i < objDataset.Tables[0].Rows.Count; i++)
{
box.Items.Add(objDataset.Tables[0].Rows[i][0].ToString());
}
}
public static void ReportHOSTSN(CrystalDecisions.Windows.Forms.CrystalReportViewer viewer, string Adress)
{
GetAssets3(Adress);
CrystalReport1 assets = new CrystalReport1();
assets.Load(Application.StartupPath + "CrystalReport1.rpt");
assets.SetDataSource(objDataset.Tables["Adress"]);
viewer.ReportSource = assets;
}
}
}

  回复  引用    

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace CrystalReports
{
class GetData
{
private static SqlConnection objConnection;
//连接数据库
public static SqlConnection GetConnection()
{
string str = "server=.;uid=sa;pwd=sa;database=huxizhi";
try
{
objConnection = new SqlConnection(str);

}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
objConnection.Close();
}

return objConnection;
}
}
}

  回复  引用    

我的代码大体是这样.用C#内置的CR 10.2制作的表能实现选采集点a得出a的表,选采集点b得到b相关的表.现在的问题是我用CR 10.2制作图就无法实现了.请阿泰兄指点.
  回复  引用    

#32楼  2008-08-22 17:36 figo [未注册用户]
阿泰兄,就今天早上的那个问题“我已经做好2个水晶报表,但是如何通过一次预览就将它们调用出来. ”。
我把将第二个报表作为子报表放到第一个报表的页脚,但是运行的时候浏览第二个报表,弹出了一个登陆窗口,要输入登陆信息。这一般是什么问题引起呢?请阿泰兄指点下。
  回复  引用    

#33楼 [楼主] 2008-08-22 18:02 阿泰      
figo (33楼)

子报表需要单独的给与登录信息,即使他用的是与主报表同一个数据源。
  回复  引用  查看    

#34楼 [楼主] 2008-08-22 18:08 阿泰      
@fredrickhu(31楼)

我粗略看了一下,似乎很简单,呵呵。等我再仔细看看吧
  回复  引用  查看    

#35楼  2008-08-22 18:36 figo [未注册用户]
谢谢阿泰兄的指点。
但是我之前弄的子报表都不用给与登陆信息的,不知道为什么。对了,我忘记说我用的是vs2005自带的水晶报表开发的。
要是给与子报表登陆信息,应该怎样写呢?阿泰兄举个例子行吗?我用的数据库是access和用C#开发语言,谢谢。
  回复  引用    

--引用--------------------------------------------------
阿泰: @风吹小屁屁(12楼)

你的这几个要求用spreadsheet似乎不是很合适,直接用datagrid更好些。
不过建议你自己多研究研究,呵呵。因为我的电脑上没有VB6这样的环境了。
要是我做的话,基本上是这样的:

1)根据查询条件从数据库生成一个recordset,逐格填充spreadsheet
2)将修改后的数据根据每一行的一个唯一性标志位,逐行去更新数据库
3)这个要监控keypress事件,出发时回写数据库即可。

希望你自己先多试试

--------------------------------------------------------
谢谢阿泰的回答,受益非浅.我的表述可能有点错误,因为我做的表格必须和生产线现在使用的表格相一致,而spreadsheet可以直接从EXCEL中复制过来,所以也是很懒的一个方法.但是每个单元格对应一个数据库表的列的方法也非常头疼.DATAGRID貌似不能实现我所说的功能吧.希望阿泰能给个具体的例子.
比如单元格(B,2)调用DB数据库的TB表中的YG列,应该如何实现呢?
期待你的回复~~非常感谢~
  回复  引用    

泰哥 我用的是VS2005自带的水晶报表 在本机运行一切正常 可是在服务器上运行时 不出现黄色错误页面 但是提示报表加载错误 而且pdf阅读器的按钮图片也不显示 这是怎么回事啊
请泰哥指教 非常感谢
  回复  引用    

#38楼  2008-08-25 11:11 露为霜 [未注册用户]
请教阿泰。
用水晶报表直接导出Excel的时候有一个选项是“导出页眉和页脚”,请问用程序实现的话这个属性值该怎么设置,一直没有找到,谢谢
  回复  引用    

#39楼 [楼主] 2008-08-26 10:06 阿泰      
@露为霜 (38楼)

此属性为objCRReport.ExportOptions.ExcelExportPageAreaPair

  回复  引用  查看    

#40楼 [楼主] 2008-08-26 10:08 阿泰      
@wrxking(37楼)

需保证internet来宾帐号对系统temp有可读写权限,内网系统的话建议把这个权限赋给everyone

  回复  引用  查看    

--引用--------------------------------------------------
阿泰: @wrxking(37楼)

需保证internet来宾帐号对系统temp有可读写权限,内网系统的话建议把这个权限赋给everyone

--------------------------------------------------------
@泰哥
我已经把服务器上C盘的temp文件夹加了everyone权限(可读可写) 可是还是不显示报表 而且报表工具栏上的按钮图片也不显示(在本机正常显示) 提示:报表加载失败 请泰哥帮忙啊
  回复  引用    

#42楼  2008-08-26 13:47 露为霜 [未注册用户]
--引用--------------------------------------------------
阿泰: @露为霜 (38楼)

此属性为objCRReport.ExportOptions.ExcelExportPageAreaPair

--------------------------------------------------------
唉,太遗憾了。我用的还是9.2版本,没有此属性。
  回复  引用    

#43楼  2008-08-26 16:49 露为霜 [未注册用户]
@阿泰
我用程序方式间接地实现了9.2版本没有“导出页眉页脚”属性。

我将报表的标题放到了“报表页眉”这节,然后将“页脚”这节设置为“抑制显示”,“页眉”将其隐藏。这样出来的报表,就有一个标题,然后后面跟着明细内容和汇总内容,没有分页了。
  回复  引用    

阿泰你好:
请教一个子报表的问题:有多个图片,每个图片对应多条记录,(根据图片id关联)这个怎么实现?(每个图片一页,每个图片对应的记录不会超过一页)
我的思路:把图片放在详细资料的左边,右边放子报表,子报表显示改图片对应的记录。
遇到的问题:如果根据图片id获取子报表的数据源?
  回复  引用    

#45楼  2008-08-27 13:59 jiessie9 [未注册用户]
@阿泰
你好,感觉看你的东西比较实用.我现在有个水晶报表的问题:通常的报表上面是表头,下面是详细资料。可是我有一个报表,它是2个这样的表上下显示堆叠出来的,不知道怎么做,能帮我分析一下吗?最好能有一个rpt实例,谢谢!
  回复  引用    

#46楼  2008-08-27 14:04 jiessie9 [未注册用户]
@阿泰
你好,感觉看你的东西比较实用.我现在有个水晶报表的问题:通常的报表上面是表头,下面是详细资料。可是我有一个报表,它是2个这样的表上下显示堆叠出来的,不知道怎么做,能帮我分析一下吗?最好能有一个rpt实例.使用主从报表是可以,就是上下2个表的表头很难对齐,这是个很大的问题。谢谢! --------------------------------------------------------

  回复  引用    

#47楼 [楼主] 2008-08-27 14:15 阿泰      
@露为霜(42,43楼)

不好好意思,我现在用的是CR XI,所以肯定是有些不一样的地方了~~
非常感谢你的分享

  回复  引用  查看    

#48楼 [楼主] 2008-08-27 14:29 阿泰      
@xiaozhi7566(44楼)
请参考http://www.cnblogs.com/babyt/articles/165887.html
  回复  引用  查看    

#49楼 [楼主] 2008-08-27 14:37 阿泰      
@jiessie9 (45、46楼)
其实完全可以使用一个空的主报表,挂两个子报表,这样容易对齐

单纯的一个主报表+一个子报表也是可以对齐的。

子报表与主报表对不齐,主要是子报表的左侧默认有一个空出的区域
把子报表的全部内容(Ctrl+a)后,全部往往左拖,直到最左边的字段顶到最左边
然后再到主报表里去做对齐就好做了

  回复  引用  查看    

@阿泰
谢谢,问题已解决
  回复  引用    

@啊泰
还是我 又来麻烦你了
还是当水晶报表上传到服务器后 运行时提示错误:System.Runtime.InteropServices.COMException: 类文字列无效
我在网上查了好多资料 感觉好像是需要下载CrystalReportsRedist2005_X86.msm,将它合并到项目中生成安装包,然后到服务器上安装吧

可是我一直在网上找下载 CrystalReportsRedist2005_X86.msm 的地址 可是所有的都链接到 http://www.businessobjects.com/products/dev_zone/net/2005.asp 这个地址 是个英文网站 没看懂 不知道应该在那下载 能提供个下载CrystalReportsRedist2005_X86.msm 的地址吗 或者本站有? 谢谢啊泰兄弟了

  回复  引用    

#52楼 [楼主] 2008-08-29 00:06 阿泰      
@wrxking

http://xianexs.mail.qq.com/cgi-bin/downloadfilepart/svrid241/cr_net_2005_mm_mlb_x86.zip?svrid=241&fid=78c71191be178aaff54e5636fe09901673756de64fc05be8&&txf_fid=54c939014f306b2554bdae2a286c85a734a69062&&txf_sid=be0787d4eb909c4d47d456e79a362ed6f9613dd4
如果需要提取码,是92f8be9d
  回复  引用  查看    

#53楼  2008-08-29 00:32 makty [未注册用户]
阿泰
你好
我才学报表 现在遇到一个很愁人的交叉表,格式看起来很明了,可是不知道数据怎么设计,能帮我分析下吗,我邮箱是59629797@qq.com你可以先联系下我给吧我的报表样式给你帮我分析下 谢谢~
  回复  引用    

#54楼  2008-08-29 00:41 makty [未注册用户]
http://xianexs.mail.qq.com/cgi-bin/downloadfilepart/svrid230/%D0%C2%BD%A8+Microsoft+Excel+%B9%A4%D7%F7%B1%ED.xls?svrid=230&fid=78c71191be178aaf199d8148242230bfbfeab1097dedc9f5&&txf_fid=4e59d11efdd7d9a94abbba804da3849f0491c9c7&&txf_sid=64ee34b9f7ab388e3e71df47d7a1ee1f2516074a

才知道QQ邮箱上传的可以给别人下载啊,阿泰,我把这个例子上传了下,麻烦你有时间看看,办我分析下这个表怎么做好,不胜感谢~~
  回复  引用    

#55楼 [楼主] 2008-08-29 10:02 阿泰      
@makty(54楼)

提取码是啥?
  回复  引用  查看    

@泰哥
我用的是VS2005自带水晶报表
带有水晶报表的页面,发布到服务器上后出现如下错误:
异常详细信息: System.IO.FileNotFoundException: 检索 COM 类工厂中 CLSID 为 {11BD5260-15B6-412D-80DB-12BB60B8FE50} 的组件时失败,原因是出现以下错误: 8007007e。
出错代码:

行 16: <div>
行 17: <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="True" Height="1106px" Width="876px" ReportSourceID="CrystalReportSource1" />
行 18: <CR:CrystalReportSource ID="CrystalReportSource1" runat="server">(第18行为红色字体)
行 19: <Report FileName="CrystalReport.rpt">
行 20: </Report>

请问这是什么原因啊? 请泰哥指教

  回复  引用    

#57楼 [楼主] 2008-08-29 15:25 阿泰      
@lovecoding

很大可能是部署的问题。
看这个内容的51楼和52楼,如果你打包的时候没用到这个文件,那就是部署的原因
  回复  引用  查看    

@泰哥
我用到了CrystalReportsRedist2005_X86.msm文件 可是还是不行
我不确定自己部署的是否正确,部署的时候还需要别的什么文件吗
能教一下我怎么部署吗 或者本站有相关讲解 提供一下地址 我是第一次用水晶报表(VS2005自带的) 非常感谢
  回复  引用    

#59楼  2008-08-29 22:45 makty [未注册用户]
哦 忘记了 fd16c919 这个是提取码 http://xianexs.mail.qq.com/cgi-bin/downloadfilepart/svrid230/%D0%C2%BD%A8+Microsoft+Excel+%B9%A4%D7%F7%B1%ED.xls?svrid=230&fid=78c71191be178aaf199d8148242230bfbfeab1097dedc9f5&&txf_fid=4e59d11efdd7d9a94abbba804da3849f0491c9c7&&txf_sid=64ee34b9f7ab388e3e71df47d7a1ee1f2516074a

希望这次麻烦阿泰帮我讲解下,以后这种多维交叉表的设计我就有的参考了
  回复  引用    

泰哥
你好
我是刚学水晶报表的,请问有没有办法去掉详细资料和页脚之间的空白,我用的是VS2005自带的
谢谢
  回复  引用    

#61楼 [楼主] 2008-08-30 12:08 阿泰      
@lovecoding (58楼)
请参考http://www.cnblogs.com/babyt/archive/2008/08/29/1279569.html

  回复  引用  查看    

#62楼 [楼主] 2008-08-30 12:17 阿泰      
@makty(59楼)
像这种报表,用交叉表实现起来会有诸多限制
不过这类的报表确实是很普遍的
一般情况我们是这样实现的:
不过原始表如何,单独构造一个中间汇总表,为报表服务。
而且像这种按年、按月汇总的,数据量一般也比较大,
交给报表即时汇总,性能也比较差
在我们常规的报表系统中,每天会有计划任务做数据汇总,如
日汇总、周汇总、月汇总、季度汇总、年度汇总
这些汇总一般都是给报表用的,用于报表的快速展现
也就是说,报表本身并不进行复杂的运算,以呈现为主
数据的汇总,行列转换等都是在存储汇总时的程序或存储过程或其他sh脚本里的

单对这个表来说,可以构造一个有如下字段的行集
大类、小类、年份(本年、去年)、1月份收入、1月份成本、2月份收入、2月份成本

然后按照大类、小类进行分组就行了

虽然说构造如下的记录集可能更简单点
大类、小类、年份、月份、月份收入、月份成本
相对简单

但是既然汇总了,不如就一步到位,呵呵~~


  回复  引用  查看    

#63楼  2008-08-30 21:49 makty [未注册用户]
大类、小类、年份(本年、去年)、1月份收入、1月份成本、2月份收入、2月份成本
这么构建表的话就用不到交叉表了吧?就相当于我直接查询出12个月收入成本 也就是24行数据了吧。(我的理解哦) 这样的话我这个小类是会变动的 字段拼凑会有问题的,所以我第一念头就是交叉表实现下。【大类、小类、年份、月份、月份收入、月份成本】这个我周五写了个类似的SQL 差点累死 嗷嗷多的UNION拼起来的 恩 我试着写下 谢谢~~~
  回复  引用    

#64楼 [楼主] 2008-08-30 22:04 阿泰      
@makty(63楼)

这个我们也经常遇到,就是左边的条目是需要固定的,但是实际的数据呢又不可能全部有
有两种方法可以实现:
前提是这个表需要关联一个基础代码表,就是大类、小类这样的
一是使用外连接,外连接代码表
二是在数据表里添加空行,比如说基础代码表里有20行
那么就在数据表里先预先插入20个行,只有代码就可以,数值为0
这样就能补全报表样式
  回复  引用  查看    

泰哥
你好
我现在在做一张报表,其中有个备注要求支持HTML格式,比如说:
这是其中的一个备注:
(1)请提供送货单</br> (即要求在此处换行)
(2)请提供详细资料<b>送香港</b>(要求香港2个字用粗体)。。。
请问有办法实现吗???
  回复  引用    

#66楼 [楼主] 2008-08-31 09:02 阿泰      
@steve_zhong(65楼)

请参考http://www.cnblogs.com/babyt/archive/2008/08/03/1259451.html
  回复  引用  查看