http://leek.woku.com/article/4909847.html
水晶报表为我们提供了非常多的报表设计功能,如何来更灵活的设计自已想要的输出文本例如报表的标题。可能由于所属的公司或类型不同,如果不采用参数字段来输入,就需要设计两张报表(*.rpt)文件。或单独保存到数据库内间接调用。利用参数字段从应用程序直接输入到报表增加了灵活性,同时也提高了设计开发的效率。
代码如下:
Public Sub SetCrystalPara(ByVal sPara As String)
'' ==========================================================
' 开发人员:段利庆
' 编写时间:09-08-13
' 函数名称:FullCrystalRptPara
' 参数说明:sPara 参数字段值
'
' 功能说明:设置水晶报表的【参数字段值】
' 其他说明:
'' ==========================================================
Dim ParamFields As New CrystalDecisions.Shared.ParameterFields
Dim ParamField As New CrystalDecisions.Shared.ParameterField
Dim discreteVal As New CrystalDecisions.Shared.ParameterDiscreteValue
'*设置参数字段的名称,该名称必须与报表中的参数相符
'*否则不会引起替代的效果
ParamField.Name = "报表抬头"
'*设置数值并将它设置给参数字段对象
discreteVal.Value = sPara
ParamField.CurrentValues.Add(discreteVal)
'*加入该参数字段对象至参数字段对象集合
ParamFields.Add(ParamField)
'*设置参数字段对象集合至查看器控件
CrystalReportViewer1.ParameterFieldInfo = ParamFields
End Sub
Private Sub Button4_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button4.Click
FullCrystalRptPara(TextBox1.Text)
End Sub
Private Sub FullCrystalRptPara(Optional ByVal sPara As String = vbNullString)
'' ==========================================================
' 开发人员:段利庆
' 编写时间:09-08-13
' 函数名称:FullCrystalRptPara
' 参数说明:sPara 参数字段值
'
' 功能说明:将数据表显示到【CrystalReportViewer】
' 其他说明:1.创建报表文件【CstlRptPara.rpt】
' 2.可以采用ADO连接来设计报表的样式,{DataTable}的格式相同就可以
'' ==========================================================
'*声明报表文件的对象
Dim MyCrystalReport1 As New CstlRptPara
Dim strRptPath As String
strRptPath = Application.StartupPath + "/CstRpt/CstlRptPara.rpt"
Try
'*1:设置报表文件的路径
MyCrystalReport1.OpenSubreport(strRptPath)
Catch ex As Exception
MessageBox.Show(ex.Message.ToString)
GoTo PROC_EXIT
End Try
Dim objData As New DBLog
Dim strsql As String
strsql = "SELECT 编号 as _,名称,单价,备注,删除 " & _
"FROM 计量仪表_价格 " & _
"WHERE 删除 = 0 " & _
"ORDER BY 编号 "
'*一个带过滤的测试sql
' strsql = "SELECT 编号 as _,删除 " & _
' "FROM 计量仪表_价格 " & _
' "WHERE 删除 = 0 " & " AND " & _
' "编号 = 3 " & _
'"ORDER BY 编号 "
Dim tTable As DataTable = objData.DBOperate(strsql)
Try
'*2:载入数据
MyCrystalReport1.SetDataSource(tTable)
Catch ex As Exception
MessageBox.Show(ex.Message.ToString)
GoTo PROC_EXIT
End Try
'*3:提交到控件 显示数据
'*设置参数字段值
If Len(sPara) <> 0 Then
SetCrystalPara(sPara)
End If
Me.CrystalReportViewer1.ReportSource = MyCrystalReport1PROC_EXIT: Exit Sub End Sub
原文链接:https://www.f2er.com/vb/262770.html