永发信息网

如何在水晶报表中实现SQL 查询

答案:2  悬赏:80  手机版
解决时间 2021-03-05 20:51
  • 提问者网友:浮克旳回音
  • 2021-03-04 23:02
如何在水晶报表中实现SQL 查询
最佳答案
  • 五星知识达人网友:舍身薄凉客
  • 2021-03-04 23:20
给你一个例子 基本可以传递参数 到水晶报表 可以查询 并且可以将参数字段显示为你需要的值
以前采用vb6做的动态传递水晶报表参数字段,存在一个缺陷就是在设计水晶报表的时候没有按照注释的那里写的(直接拖参数字段到预览的界面)就不会出现水晶报表提示要输入离散值的消息框。其实也不完全是这样的,有时我按照这种方式操作仍然有这个输入离散值消息框的提示,具体是什么原因造成的还不是很清楚,估计开发水晶报表的明白内部机制的原因,我只想能顺畅的使用就可以了,可出现不相关的输入提示就直接影响到客户使用程序。

我在做DotNet2005时用的是水晶报表10,在传递参数后。有加入了设置显示报表控件的参数对象集合为传递的参数值【CRViewer91.ParameterFieldInfo = m_Report.ParameterFields 】运行程序就没有这个输入离散值的提示。vb6使用水晶报表9.0不知道加入这个设置是否能解决问题。暂时我还没有条件测试主要是计算机上没有安装水晶报表9,不过也是一种解决这个问题的办法。先在这里保存起来,待有条件了测试下,没有这条语句可能在设计报表rpt文件的时候和程序动态调用可就要来回的测试了 。 哈~~~~~~

Private Sub DisplayReport1()
'' ==========================================================
' 开发人员:段利庆
' 编写时间:2008-09-01
' 过程名称:DisplayReport
' 参数说明:
' 功能说明:动态载入水晶报表文件(*.rpt)显示打印预览
'
' 其他说明:程序采用的是Crystal Reports 9.1版本
' 工程引用:Crystal Reports 9 ActiveX Designer Design and Runtime Library
' 控件:CRViewer91
'
'
'' ==========================================================

'*中央错误处理
On Error GoTo PROC_ERR

Dim m_Application As New CRAXDDRT.Application
Dim m_Report As CRAXDDRT.Report

Dim strSQL As String
strSQL = "SELECt * FROM 视图_收费_计量仪表 "

Dim strRptPath As String
strRptPath = App.Path & "\Crystal_RPT_Para\Sell_Meter.rpt"
Debug.Print "strRptPath:" & strRptPath

Set m_Report = Nothing
Set m_Report = m_Application.OpenReport(strRptPath, 1)
'*防止弹出水晶报表数据库登录对话框
m_Report.Database.Tables.Item(1).TestConnectivity
m_Report.Database.Tables.Item(1).ConnectBufferString = objdata.ConnectionString
m_Report.SQLQueryString = strSQL

'****************************************************
'*参数字段传递参数
'*
'*搞了2天了终于找到原因了 08-09-03
'*1.在新建一个参数字段,一定要直接拖放到预览里面
'* 否则拖到设计里面就要弹出输入离散值的消息框
'*
'*2.GetItemByName("MyParaT") 参数是参数字段的名称
'*
m_Report.DiscardSavedData
m_Report.ParameterFields.GetItemByName("MyParaT").ClearCurrentValueAndRange
m_Report.ParameterFields.GetItemByName("MyParaT").AddCurrentValue (Text1.Text)

m_Report.ParameterFields.GetItemByName("k1").ClearCurrentValueAndRange
m_Report.ParameterFields.GetItemByName("k1").AddCurrentValue (Text1.Text)

m_Report.ParameterFields.GetItemByName("k2").ClearCurrentValueAndRange
m_Report.ParameterFields.GetItemByName("k2").AddCurrentValue (Text1.Text)

'*-----------------------------------------------------
'* 以下这句是否能彻底解决弹出离散值输入框问题
'*是根据vb2005 Crystal Report10 顺畅的处理结果得出的
'*2009-08-26
'CRViewer91.ParameterFieldInfo = m_Report.ParameterFields
'*传递的对象 用下面的语句
'*Set CRViewer91.ParameterFieldInfo = m_Report.ParameterFields
'*-----------------------------------------------------
'****************************************************

CRViewer91.DisplayGroupTree = False
CRViewer91.ReportSource = m_Report
CRViewer91.Zoom 1
CRViewer91.ViewReport

'*结束子程序
PROC_EXIT:
Exit Sub
'*错误处理,显示出错信息
PROC_ERR:

MsgBox " ErrNumber: " & Err.Number & vbCrLf & _
"ErrDescription: " & Err.Description & vbCrLf & _
" Module: " & Me.Caption & vbCrLf & _
" Procedure: " & "DisplayReport"

GoTo PROC_EXIT
End Sub
全部回答
  • 1楼网友:山河有幸埋战骨
  • 2021-03-05 00:47
不能这么弄。得你提前用程序将sql文写好。交给数据记录集,查询出的数据结果赋给报表。不能直接在报表中写。这样写也是有条件的。必须低版本水晶报表才支持。但是写的话 不可能引入变量.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯