1.数据从DataSet导入到报表中不能直接oRpt.SetDataSource(ds);
应该oRpt.SetDataSource(ds.Tables[0]);
或者oRpt.SetDataSource(ds.Tables["表名"]);
2.ArrayList 二维数组的应用
例子:
原思路:将得到的每条二进制图片数据byte[] bt = br.ReadBytes((int)fs.Length);放入新定义的
一个byteTemp数组中,显然不行,因为bt本身就是一个数组,而新定义的byteTemp数组的
每个元素都要求是bt型。
解决办法:二维数组ArrayList
ArrayList btList = new ArrayList(6);
for (int i = 0; i < getPath.Length; i++)
{
FileStream fs = new FileStream(getPath[i], FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] bt = br.ReadBytes((int)fs.Length);
btList.Insert(i, bt);
fs.Close();
}
btList.Insert(i, bt);i表示位置,相当于第i个,bt表示当前值。
3.将图片的二进制变量赋为空
string strTemp = "";
byte[] temp;
temp = new ASCIIEncoding().GetBytes(strTemp);//将符号""装换成二进制
btList[5] = temp;
4.怎么去掉水晶报表空白图片遗留的边框
方法:1.在水晶报表上对需要去掉的图片点击右键,选择Format Object.
2.选择Common,对Suppress勾上
3.修改格式公式编辑器isnull({DataTable1.Pic6})
这样图片6就OK了
5.oCR.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Landscape;
报表纸张明明设置的是A4,但打印出来的时候,一页大概还有1/5页空白在底下没用,由上面代码引起的
6.过段时间发现数据库连接错误
主要是用户名更改后引起的,应该把连接全部重新设置为(local)
8.如果发现报表有很多数据
(1)查看报表数据库专家里面的链接,不要有分支
(2)如果要求一个模版打印多条数据,则要将字段放入详细资料里面
9.水晶报表映射问题
1.强连接---
又键点击手动生成的DataSet中强连接的表中属性,观察SQL语句
如果在fill该表中,连接的数据为空,则会报错
2.弱连接
手动生成的DataSet中弱连接的表是手动添加的,不存在以上问题,也可以映射图片
10.水晶报表的关闭按钮事件处理--
11.报表数据为空:
①大部分情况都是数据库专家里面的各个表连接的影响的,表现在数据不唯一
②报表数据源修改后,如果数据不显示的一个原因就是字段得重新连接,原有的字段可能影响报表显示
③如果是PULL模式下,可能某个表字段并没有在报表上使用,导致数据为空
12.关于阿泰写的在水晶报表中实现任意选择指定字段显示-模板及C#升级版格式转换问题
http://topic.csdn.net/u/20091224/16/c97a5f55-f5d9-436c-ac8a-e05baec10ce6.html
http://topic.csdn.net/u/20090310/22/77529b37-898e-45ba-a551-892e9056f289.html
13.以泰哥的在水晶报表中实现任意选择指定字段显示-模板及C#升级版为指导思想,成功的实现了。
今天只更新了下数据库表UriResultPrint,同时更新了下报表的数据库专家的UriResultPrint,结果报错了,
问题一:
错误如下:
给该函数的参数太多
文件C:/DOCUMEN~1/ADMINI~1/LOCALS~1/Temp/temp_6b252588-6042-4558-a09c-74df3fefe87a
{C9378C35-463A-4CF9-BBC4-15D445C92EE6}.rpt内出错:
公式 <uriResultField1>
'totext({UriResultPrint.Rbc},'0')'
给该函数的参数太多。
附:1.字段格式没有任何变化,而且数据库只是添加了稍许字段,也没有用到报表上
2.totext({UriResultPrint.Rbc},'0')还原成'totext({UriResultPrint.Rbc})后,就不报错了。
3.导入之前数据库没有改动的项目,'totext({UriResultPrint.Rbc},'0')'并没有错误。
问题二 :
公式格式也发生错误了:
例如:if {UriResultPrint.SingularRbc} = 0 Then 100.00
Else {UriResultPrint.WhackRbc}*100/({UriResultPrint.WhackRbc}+{UriResultPrint.SingularRbc})
这段公式之前的项目中没有报错,而且很运行得很正常
数据库专家更新后则报错:
1.“if {UriResultPrint.SingularRbc} = 0中0应为字符型”
我改成“0”就可以了,怎么之前没有报错呢
2.“{UriResultPrint.SingularRbc})”应该为数字,日期。。
我将其转换为tonumber类型就OK了,怎么之前没有报错呢
解决方法:导致公式'totext({UriResultPrint.Rbc},'0')报错,
因为式'totext({UriResultPrint.Rbc},'0')中UriResultPrint.Rbc必须是INT类型的,
而不是VARCHAR类型的,唉,真是粗心。。。。
相关帖子:http://topic.csdn.net/u/20100302/18/3d89e86d-6e6e-4679-887c-aa7623a98ed1.html?10774