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变量但是不知道怎么做 :(大虾赐教啊。
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变量但是不知道怎么做 :(大虾赐教啊。
正常吗?
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
Report.Database.Tables(1).SetTableLocation "up_PISRptFillMSReport", "", "连接数据库的字符串"up_PISRptFillMSReport 可以改成 sql 语句. 但最好的做法是用sp返回结果集给水晶报表的,因为公司的报表都比较复杂,所以都用SP来做的.
如果报表有两个SP以上作为数据源,可以继续指定
Report.Database.Tables(2).SetTableLocation ...第二个关键是改参数的值
Report.ParameterFields(1).SetCurrentValue pbitOneCCPP
发生“无效名称”错误,
=========================
估计是 "jsstart1" 拼写错误. 改了就好了
oRpt.ParameterFields.GetItemByName("jsstart1").Value ="2005-10-20"
也无法运行,报错“expucted function or variable ”
这是为什么呢?
数据库中取得的字段名是:jsstart
oRpt.ParameterFields.GetItemByName("jsstart1").Value ="2005-10-20"
也无法运行,报错“expucted function or variable ”
这是为什么呢?----
晕,还没搞定啊!
你将字段改成字符型啊 2005-10-20 两边加单引号
========================
你直接用水晶报表打开rpt文件,不就可以查看它的字段名及parameter名了