200分跪救求:VB6与水晶报表的参数传递
环境:VB6.0+CR10
我先用CR10做了一个报表,其中用到一个参数字段.现要求在VB6的开发环境上,用户在界面上从COMBO选择报表中可用的数据,报表根据这些条件选择适当的记录,现在我不想重新改变数据源,只需传递一个指定的参数问题即可解决,但不知如何去做.
另外还有一个问题是如何在combo中取得报表中的某些字段
问题点数:100、回复次数:8Top
1 楼jjun816()回复于 2005-09-15 16:17:12 得分 0
发了这么多贴,真有分:)关注中Top
2 楼youandme520(南瓜)回复于 2005-09-15 16:52:20 得分 0
我常用水晶报表9 不知道10 里面兼容不兼容
你可以在程序离设置记录集呀 记录集条件在程序中设定
Dim rs As New ADODB.Recordset
Dim rs1 As New ADODB.Recordset
rs.Open "select * from t1 where qybh='" & qybh & "'", conn, 3, 1 '设定记录集
Dim capp As New CRAXDRT.Application
Dim carp As New CRAXDRT.Report
frmReport.Show
Set carp = capp.OpenReport(App.Path & "\rpt\企业信息表.rpt")
carp.Database.SetDataSource rs '把记录集的内容显示在报表中
carp.reportTitle = frmCorpSearZH.strExp
frmReport.CRViewer91.ReportSource = carp
frmReport.CRViewer91.ViewReport
这是 水晶报表9的做法 可以不考虑数据源 但是 sql语句查询的表的结构 要和报表中连接的表结构相同Top
3 楼youandme520(南瓜)回复于 2005-09-15 16:55:22 得分 0
水晶报表中的公式字段可以在vb程序中读取到 并设置公式来动态显示你需要的信息
'*****
'*函数名: setFormulaFields
'*函数功能: 控制水晶报表内公式字段的公式内容
'***********
Public Function SetFormulaFields(carp As CRAXDRT.Report, FieldName, formula As String)
Dim i
With carp
For i = 1 To .FormulaFields.Count
If .FormulaFields(i).FormulaFieldName = FieldName Then
.FormulaFields(i).Text = formula
End If
Next i
End With
End Function
这事公式字段在程序中的公式设定函数 是水晶报表9的
不知道10中能不能用
希望对你有帮助
Top
4 楼BillGaze(BillGaze)回复于 2005-09-15 17:10:28 得分 0
youandme520(南瓜),这位老兄先谢谢你了,我先试着看看,VB能直接访问公式字段确实具有一定的灵活性,问题也许能从这里间接得到解决Top
5 楼BillGaze(BillGaze)回复于 2005-09-15 17:33:43 得分 0
如果我想在程序中获取报表中某个字段的值,如按部门分类,我想获取各个部门名称,该怎么做呀Top
6 楼BillGaze(BillGaze)回复于 2005-09-15 17:41:55 得分 0
youandme520(南瓜)这位老兄,我刚这样做过,在理论上应该行的,不过所赋的值并未生效,是否要进行什么刷新吗,我在程序中这样用的行吗
Call SetFormulaFields(oRpt, "mtotalTime", CStr(TotalTime))
Top
7 楼youandme520(南瓜)回复于 2005-09-15 20:02:00 得分 0
是水晶报表的公式格式问题
如果各是不正确 就不会用效果
如果直接要在公式字段现实内容 在 字符串中要加引号 可以这样写
Call SetFormulaFields(oRpt, "mtotalTime", chr(13) & CStr(TotalTime) & chr(13))
chr(13) 是vb中专意的引号Top
8 楼youandme520(南瓜)回复于 2005-09-15 20:06:03 得分 0
抱歉错了呵呵
应该是 chr(34)
chr(13) 是回车
Private Sub Command1_Click()
Dim capp As New CRAXDRT.Application
Dim carp As New CRAXDRT.Report
Set carp = capp.OpenReport(App.Path & "\report.rpt")
SetFormulaFields carp, "formula1", Chr(34) & "要显示的信息" & Chr(34)
CRViewer91.ReportSource = carp
CRViewer91.ViewReport
End Sub
Top




