在设Person.rpt 中已经 设置一个参数字段 strYear 按照下面的方法:为什么运行的时候,会弹出一个窗口,要我输入参数的值,我不是已经给参数据赋值了吗?难道不是这样赋值的?请大家多多指点!
Public Sub printD(v_strCondition As String)
   On Error GoTo Ex
   Dim f_CryApp   As New CRAXDDRT.Application
       Dim f_Report   As CRAXDDRT.Report
       Dim f_strSQL   As String
       Dim f_Rst      As New ADODB.Recordset
       f_strSQL = v_strCondition
       Set f_Report = f_CryApp.OpenReport(App.Path & "\Report\Person.rpt")
       
       f_Report.ParameterFields.GetItemByName("strYear").ClearCurrentValueAndRange'没有这
        句的话,运行到下一句会出错
       
       f_Report.ParameterFields.GetItemByName("strYear").AddCurrentValue ("2004")
       
       f_Rst.Open f_strSQL, p_Conn, adOpenKeyset, adLockOptimistic       f_Report.Database.SetDataSource f_Rst
       f_Report.DiscardSavedData
       Screen.MousePointer = vbHourglass
       CRViewer91.ReportSource = f_Report
      
       CRViewer91.Refresh
       CRViewer91.ViewReport
       
       Screen.MousePointer = vbDefault
       Set f_Rst = Nothing
Exit Sub
Ex:
End Sub

解决方案 »

  1.   

    怎么没有人帮忙啊?
    郁闷ing!
      

  2.   

    改成下面的样子就可以了,真搞不懂哪 为什么 对参数赋值,放在 f_Report.DiscardSavedData 之前会不行 不知哪位高人可以解释一下!Public Sub printD(v_strCondition As String)
       On Error GoTo Ex
       Dim f_CryApp   As New CRAXDDRT.Application
           Dim f_Report   As CRAXDDRT.Report
           Dim f_strSQL   As String
           Dim f_Rst      As New ADODB.Recordset
           f_strSQL = v_strCondition
           Set f_Report = f_CryApp.OpenReport(App.Path & "\Report\Person.rpt")
           
               
           f_Rst.Open f_strSQL, p_Conn, adOpenKeyset, adLockOptimistic       f_Report.Database.SetDataSource f_Rst
           f_Report.DiscardSavedData
           
           f_Report.ParameterFields.GetItemByName
             ("strYear").ClearCurrentValueAndRange'没有这
            句的话,运行到下一句会出错
           
           f_Report.ParameterFields.GetItemByName("strYear").AddCurrentValue ("2004")
           Screen.MousePointer = vbHourglass
           CRViewer91.ReportSource = f_Report
          
           CRViewer91.Refresh
           CRViewer91.ViewReport
           
           Screen.MousePointer = vbDefault
           Set f_Rst = Nothing
    Exit Sub
    Ex:
    End Sub
      

  3.   

    很奇怪,我用你那方法式着打答案时,第一次支行到了
    f_Report.ParameterFields.GetItemByName("strYear").ClearCurrentValueAndRange
    会提示有错,名字不对“strYear”。我因有事,把VB关了,一会再来运行,可是不会出错了。但是设置的参数对报表无效。 
      

  4.   

    参看有关于DiscardSavedData的帮助