IT人
相关图书

水晶报表为什么没有刷新数据

所属分类:.NET技术 图表区
-----------------------------------------

水晶报表版本:11.5.0.313
环境:vb.net2005 、SQL 2005,水晶报表

问题:已经向报表文件传递参数,但报表确没有刷新数据。

代码如下:
   strRPTFile = GetReportPath("GL", "Voucher.rpt")

                For I As Integer = 0 To str.Length - 1
                    If str(I).IndexOf("=") > 0 Then
                        If str(I).Split("=")(0).ToUpper = "Server".ToUpper Then
                            srv = str(I).Split("=")(1)
                        End If

                        If str(I).Split("=")(0).ToUpper = "DataBase".ToUpper Then
                            db = str(I).Split("=")(1)
                        End If

                        If str(I).Split("=")(0).ToUpper = "Uid".ToUpper Then
                            user = str(I).Split("=")(1)
                        End If

                        If str(I).Split("=")(0).ToUpper = "Pwd".ToUpper Or str(I).Split("=")(0).ToUpper = "Password".ToUpper Then
                            pwd = str(I).Split("=")(1)
                        End If

                    End If
                Next


                Dim ReportDoc As New ReportDocument()
                Dim logonInfo As New TableLogOnInfo
                Dim table As Table
                ReportDoc.Load(strRPTFile)
                '设置登录信息
                For Each table In ReportDoc.Database.Tables
                    logonInfo = table.LogOnInfo
                    With logonInfo.ConnectionInfo
                        .ServerName = srv
                        .DatabaseName = db
                        .UserID = user
                        .Password = pwd
                    End With
                    table.ApplyLogOnInfo(logonInfo)

                Next

                With ReportDoc

                End With

                ReportDoc.SetParameterValue("@Fvoucherid", strFvoucherid)

                With My.Forms.Frm_Report.CrystalReportViewer1
                    .ReportSource = ReportDoc
                    .DisplayGroupTree = False

                End With
                My.Forms.Frm_Report.ShowDialog()

            End If

但同样类似的代码处理其他报表又可以。不知是代码有问题还是水晶报表的设置有问题。

----------------------------------------------------------------------

ReportDoc.SetParameterValue("@Fvoucherid", strFvoucherid)
        ReportDoc.Refresh();//加上这句

                With My.Forms.Frm_Report.CrystalReportViewer1
                    .ReportSource = ReportDoc
                    .DisplayGroupTree = False

                End With

--------------------------------------------------------

我也试过加上这个参数,但我加上这个参数后,打开报表查看的窗体后,系统就提示没有提供参数。不知是不是因那句话而要求我们重新输入参数,有点类似于在设计模式下按F5刷新。

--------------------------------------------------------

没错,Refresh就是强制清楚水晶报表缓存的数据重新提取数据,如果此时你在提示窗口输入参数正常出报表,但用代码无法实现,就说明你的赋值参数语句出了问题.如果还是无法解决问题,建议你把代码与报表和数据库(做成Access格式的MDB文件)一起打包发给我,我来帮你测试.forgot2000@sohu.com

--------------------------------------------------------

TO:forgot(忘记forgot2000)
真是太谢谢你了,不过不好意思。我要星期二才上班。到时再打包给你。
相关问题
    Copyright ◎ 1998 - 2007 编程资料网 All Rights Reserved