VB中代码如下:
Private Sub Form_Load()
    Screen.MousePointer = vbHourglass    JSBFilename = "\jsb.rpt"
    Set oRpt = oApp.OpenReport(App.Path & JSBFilename, 1)    oRpt.Database.SetDataSource rsJieSuan '连接水晶报表和数据源    oRpt.ParameterFields.GetItemByName("jsstart1").Value ="2005-10-20"
    oRpt.ReadRecords    CRViewer91.ReportSource = oRpt '启用水晶报表的预览功能
    CRViewer91.ViewReport
    Screen.MousePointer = vbDefault
End Sub
执行到:oRpt.ParameterFields.GetItemByName("jsstart1").Value ="2005-10-20"
发生“无效名称”错误,
换成:oRpt.ParameterFields(1).ClearCurrentValueAndRange 
     oRpt.ParameterFields(1).AddCurrentValue ("2005-10-25")发生:expucted function or variable  错误说明:在JSBFilename报表中定义为“仅字段定义”详细资料区中取自记录集,可以正常显示在页眉区有两个字段,jsstart1  jsend1,想让它的值来自VB变量但是不知道怎么做 :(大虾赐教啊。

解决方案 »

  1.   

    oRpt.ParameterFields.count 总是等于0  
    正常吗?
      

  2.   

    给你一段我调用的代码,数据源是sp,你的问题应该用
    Report.ParameterFields(1).SetCurrentValue 可以解决Public Sub mpViewReport()
    Dim strErr As String
    Dim crApp As New CRAXDRT.Application
    Dim Report As CRAXDRT.ReportOn Error GoTo ErrorScreen.MousePointer = vbHourglassSet Report = crApp.OpenReport(App.Path & "\MSReport\" & "MS01_04_02.rpt ")Report.Database.Tables(1).SetTableLocation "up_PISRptFillMSReport", "", "连接数据库的字符串"
    ' Report.Database.Tables(1).TestConnectivity 用于测试连接
    Report.EnableParameterPrompting = FalseReport.ParameterFields(1).SetCurrentValue pbitOneCCPP
    Report.ParameterFields(2).SetCurrentValue pintProject_uid
    Report.ParameterFields(3).SetCurrentValue pintCurDateType
    Report.ParameterFields(4).SetCurrentValue pstrReportMonth
    Report.ParameterFields(5).SetCurrentValue CDate("1900-01-01")
    Report.ParameterFields(6).SetCurrentValue CDate("2999-01-01")
    Report.ParameterFields(7).SetCurrentValue pstrCCUIDList
    Report.ParameterFields(8).SetCurrentValue pbitReportType
    Report.ParameterFields(9).SetCurrentValue pbitListOutstanding
    Report.ParameterFields(10).SetCurrentValue pintReport_seq
    Report.ParameterFields(11).SetCurrentValue pintArchive_uid
    Report.ParameterFields(12).SetCurrentValue pstrReportId
     
    CRViewer91.ReportSource = Report
    CRViewer91.ViewReport
    'CRViewer91.EnableRefreshButton = True
    CRViewer91.EnableExportButton = True
    CRViewer91.EnablePopupMenu = False
    'CRViewer91.ShowFirstPage
    'CRViewer91.EnableAnimationCtrl = TrueCRViewer91.Zoom 90ExitSub:
    Screen.MousePointer = vbDefault
    Exit SubError:
        Screen.MousePointer = vbDefault
        strErr = "Error Code: " & Err.Number & " -- " & Err.Description
        Call MsgBox(strErr, vbCritical & vbOKOnly, "Error")
        
    End Sub
      

  3.   

    我的问题其实就是像水晶报表4.6那样,将VB的变量传递给.Formulas(0)
      

  4.   

    楼主,我解决了,YEAH!m_Report.FormulaFields.GetItemByName("jsstart1").Text = "'2005-10-25'"给分吧 哈
      

  5.   

    我发现很多朋友喜欢把report与recordset绑定,我以前试过这种方法,有点麻烦,而且有时候会刷新不了数据. 所以后来改用上面的方法,很好用. 动态连接,关键是这句
    Report.Database.Tables(1).SetTableLocation "up_PISRptFillMSReport", "", "连接数据库的字符串"up_PISRptFillMSReport 可以改成 sql 语句. 但最好的做法是用sp返回结果集给水晶报表的,因为公司的报表都比较复杂,所以都用SP来做的. 
    如果报表有两个SP以上作为数据源,可以继续指定
    Report.Database.Tables(2).SetTableLocation  ...第二个关键是改参数的值
    Report.ParameterFields(1).SetCurrentValue pbitOneCCPP
      

  6.   

    oRpt.ParameterFields.GetItemByName("jsstart1").Value ="2005-10-20"
    发生“无效名称”错误,
    =========================
    估计是 "jsstart1" 拼写错误. 改了就好了
      

  7.   

    inforum(收台 灭日) 、各位:在调试时发现:oRpt.ParameterFields.COUNT=0
    oRpt.ParameterFields.GetItemByName("jsstart1").Value ="2005-10-20"
    也无法运行,报错“expucted function or variable ”
    这是为什么呢?
      

  8.   

    lzheng2001(1加1) 、各位:在cr9中怎么找一个字段的名称?是右击显示的字段:jsb2.jsstart 还是右击--格式化字段中的“对象名称”?
      

  9.   

    jsb2是我的字段定义文件名,
    数据库中取得的字段名是:jsstart
      

  10.   

    inforum(收台 灭日) 、各位:在调试时发现:oRpt.ParameterFields.COUNT=0
    oRpt.ParameterFields.GetItemByName("jsstart1").Value ="2005-10-20"
    也无法运行,报错“expucted function or variable ”
    这是为什么呢?----
    晕,还没搞定啊!
    你将字段改成字符型啊 2005-10-20 两边加单引号
      

  11.   

    在cr9中怎么找一个字段的名称?
    ========================
    你直接用水晶报表打开rpt文件,不就可以查看它的字段名及parameter名了