实现基本功能的动态水晶报表
系统配置:VS2005+内嵌的水表
目的:
我也是刚接触.net不久,做项目过程中需要设计报表,可一个个的做起来烦啊,原来做过一个vb6的动态报表,用起来还不错,故也想弄一个水表的东东。因为水表接触时间不长,做的也不是很顺手,用了我半个月的时间才弄个大概模样,不当之处还请各位见谅。觉得有用就看看,没用就当没看到吧。
目前实现的功能
1、报表标题、页码显示格式、纸张大小、纸张方向、边距等的动态修改
2、报表列标题的动态修改(2行也支持,但是感觉定义麻烦)
最大允许用户定义40列(内部定义的公式总数决定的,呵呵)
同时显示的列数必须<=提供的数据表里面的字段数,不让报错
3、数据部分偷懒了,是和提供的数据表的顺序一致(本来想做两种方式的)
4、分组头部分
简单的显示分组名
5、分组尾部分
这部分能定义是否显示、以及组的小计,比如计数、求和等
6、报表尾部分
这部分能定义是否显示、以及总计信息,比如计数、求和等
调用方法
Dim strSql As String = "select a.EmployeeID,FirstName,Title,LastName,a.Region,a.postalCode,a.country,a.homephone,a.reportsto,CompanyName,ContactName,c.OrderID,ShipCity,ShipPostalCode,ProductID,UnitPrice,Quantity,Discount " & _
"from Employees a,Customers b,Orders c , [Order Details] d " & _
"where(a.EmployeeID = c.EmployeeID And b.CustomerID = c.CustomerID And c.OrderID = d.OrderID)"
ds = Getdata(strSql)
Dim rc As Integer
Dim aa As New CryClsV1.AutoRepDoc
rc = aa.CreateRepDoc(Sfile, ds.Tables(0), sInfo)‘Sfile是Ini格式的报表设置文件
'sinfo是定义的报表左下角显示的内容
If rc > 0 Then
MsgBox(rc)
Else
CrystalReportViewer1.ReportSource = aa.ReportDoc
End If