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 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|