×

VB.Net集成水晶报表的方法(2)

Kalet Kalet 发表于2009-03-20 12:00:14 浏览191 评论0

抢沙发发表评论

Crystal Report Designer类似于FoxPro的报表设计器。通过数据库专家工具可以建立与数据源的连接;通过插入专家工具可在各节中插入字段、公式、SQL表达 式、参数等;通过选择专家工具可以筛选出有用数据;还可以使用Crystl语法和BASIC语法建立灵活的函数、公式等。
设计报表并在报表中通过选择专家工具加入一选择公式:{客户.ID} = {?ID}
(详细建表步骤非本文重点,因篇幅原因,请大家参阅相关资料) VB.Net集成水晶报表的方法(2)



  现在一切都准备就绪,下面就可以干点正事了!

首先新建一个Visual Basic.NET Windows应用程序项目。

在解决方案资源管理器中引用CrystalDecisions.CrystalReports.Engine和CrystalDecisions.Shared两个.NET组件。

再在表单的声明区中加入:






Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared


  按上图所示,在表单中摆放好四个控件,然后在按钮控件的Click事件中编写如下代码:







Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
'ParameterField类提供属性,以便检索和设置参数字段的选项和值。
Dim ParamFields As New ParameterFields()
Dim ParamField As New ParameterField()
'定义Crystal Report离散值
Dim DiscreteVal As New ParameterDiscreteValue()
Dim LogOnInfo As New TableLogOnInfo()


'表示一个报表,并且包含定义、格式化、加载、导出和打印该报表的属性和方法。
Dim Report As New ReportDocument()


'加载你事先做好的Crystal Report报表文件
Report.Load("D:\Temp\Order.RPT")

VB.Net集成水晶报表的方法(2)

' 对报表中的每个表依次循环。
Dim i As Integer
For i = 0 To Report.Database.Tables.Count - 1
'ConnectionInfo提供属性,以便检索和设置与数据库服务器或 ODBC 数据源连接的选
项。
'当前表的连接信息,请设置为与你机器相关的正确数值
LogOnInfo.ConnectionInfo.ServerName = "localhost"
LogOnInfo.ConnectionInfo.DatabaseName = "MRP"
LogOnInfo.ConnectionInfo.UserID = "sa"
LogOnInfo.ConnectionInfo.Password = "020617"
'应用连接信息
Report.Database.Tables.Item(i).ApplyLogOnInfo(LogOnInfo)
Next i


Dim CurrentID As Int16 = Convert.ToInt16(TextBox1.Text)
'重定义Crystal Report选择条件
If CurrentID = 0 Then
Report.DataDefinition.RecordSelectionFormula = "{客户.ID} > {?ID}"
Else
Report.DataDefinition.RecordSelectionFormula = "{客户.ID} = {?ID}"
End If
DiscreteVal.Value = Convert.ToInt16(TextBox1.Text)
ParamField.ParameterFieldName = "ID"
ParamField.CurrentValues.Add(DiscreteVal)
ParamFields.Add(ParamField)
'应用参数
CrystalReportViewer1.ParameterFieldInfo = ParamFields
CrystalReportViewer1.DisplayGroupTree = False
'将Crystal Replort查看器的数据源设为ReportDocumnet类的实例
CrystalReportViewer1.ReportSource = Report
Catch e1 As Exception
MessageBox.Show(e1.ToString & Chr(10) & "请检查SQL用户名,密码等连接参数和Order.RPT路径设置等!", "不正确的环境设置")
End TryVB.Net集成水晶报表的方法(2)
End Sub


  搞定!现在让我们放松一下,冲杯咖啡,坐下来慢慢欣赏自己的作品啦,是不是又酷又实用哦!当然了,这只是给大家介绍一种思路,还有很多更酷更实 用的东东,比如直接导出为Excel、PDF等格式,运行时更改组,通过WEB发布报表,大家可以打开MSDN细细发掘.NET的神奇功能吧!


群贤毕至

访客