且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何将值从表单传递给crystal报表作为参数?

更新时间:2023-09-02 22:50:04

看起来非常接近......我就是这样做的(VS2010)。



  Dim  crDoc  As  CrystalDecisions.CrystalReports.Engine.ReportClass 
昏暗的pan> pvParamValue 作为 CrystalDecisions。共享 .ParameterValues
Dim pdvParamDiscreteValue As New CrystalDecisions。共享 .ParameterDiscreteValue

crDoc = new CRYSTALREPORTNAME

pdvParamDiscreteValue.Value = FIELDNAME.tostring
pvParamValue.Add(pdvParamDiscreteValue)
crDoc.DataDefinition.ParameterFields( @ P_PARAMETERNAME)。ApplyCurrentValues(pvParamValue)


试试这个.......... 。







Private Sub btn_save_print_Click(ByVal sender As System.Object,ByVal e As System.EventArgs )处理btn_save_print.Click



Dim obj As New Letter_print





obj.Code = txt_code.text

obj.doc_nm = txt_doc_name.Text

obj.address = txt_address.Text



obj.ShowDialog(Me)



结束子



公共类_Print

Public CodeAs String =

公共doc_nm As String =

公共地址As String =





Private Sub Letter_Print_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)处理MyBase.Load

Dim k作为新的Letter_report



k.SetParameterValue(code1,code



k.SetParameterValue(doc_nm1,doc_nm)

k.SetParameterValue(address1,地址)





CrystalReportViewer1.ReportSource = k



End Sub

End Class

 CrystalReportViewer1.Refresh()
Dim rpt As ReportDocument
rpt.FileName = c:\Users\sandy\BCA\CBT\result2.rpt
Dim paramDV As ParameterDiscreteValue()
paramDV.Value = LoginForm.UsernameTextBox.Text
rpt.Refresh ()
Dim paramfields As ParameterFields = Me .CrystalReportViewer1.ParameterFieldInfo
Dim param As ParameterField
Dim 参数 As ParameterFields
param.Name = result
Dim param_value As ParameterDiscreteValue
param_value.Value = LoginForm.UsernameTextBox.Text
param.CurrentValues.Clear()
param.CurrentValues.Add( param_value)
params.Add(param)
CrystalReportViewer1.ParameterFieldInfo = params
rpt.Refresh()
CrystalReportViewer1.ReportSource = rpt
CrystalReportViewer1.ReuseParameterValuesOnRefresh = 真跨度>


I had tried the following code but its not working.
what should i have to chnges in the code?

code on the form1 that have crystalreportviewer1.
CrystalReportViewer1.Refresh()
Dim paramfields As ParameterFields = Me.CrystalReportViewer1.ParameterFieldInfo
Dim param As New ParameterField
param.Name = "result"
Dim param_value As New ParameterDiscreteValue
param_value.Value = LoginForm.UsernameTextBox.Text
param.CurrentValues.Add(param_value)
paramfields.Add(param)
CrystalReportViewer1.Refresh()

Looks pretty close... This is how I do it (VS2010).

Dim crDoc As CrystalDecisions.CrystalReports.Engine.ReportClass
Dim pvParamValue As New CrystalDecisions.Shared.ParameterValues
Dim pdvParamDiscreteValue As New CrystalDecisions.Shared.ParameterDiscreteValue

crDoc = new CRYSTALREPORTNAME

pdvParamDiscreteValue.Value = FIELDNAME.tostring
pvParamValue.Add(pdvParamDiscreteValue)
crDoc.DataDefinition.ParameterFields("@P_PARAMETERNAME").ApplyCurrentValues(pvParamValue)


Try this...........



Private Sub btn_save_print_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_save_print.Click

Dim obj As New Letter_print


obj.Code=txt_code.text
obj.doc_nm = txt_doc_name.Text
obj.address = txt_address.Text

obj.ShowDialog(Me)

End Sub

Public Class _Print
Public CodeAs String = ""
Public doc_nm As String = ""
Public address As String = ""


Private Sub Letter_Print_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim k As New Letter_report

k.SetParameterValue("code1,code

k.SetParameterValue("doc_nm1", doc_nm)
k.SetParameterValue("address1", address)


CrystalReportViewer1.ReportSource = k

End Sub
End Class


CrystalReportViewer1.Refresh()
     Dim rpt As New ReportDocument
     rpt.FileName = "c:\Users\sandy\BCA\CBT\result2.rpt"
     Dim paramDV As New ParameterDiscreteValue()
     paramDV.Value = LoginForm.UsernameTextBox.Text
     rpt.Refresh()
     Dim paramfields As ParameterFields = Me.CrystalReportViewer1.ParameterFieldInfo
     Dim param As New ParameterField
     Dim params As New ParameterFields
     param.Name = "result"
     Dim param_value As New ParameterDiscreteValue
     param_value.Value = LoginForm.UsernameTextBox.Text
     param.CurrentValues.Clear()
     param.CurrentValues.Add(param_value)
     params.Add(param)
     CrystalReportViewer1.ParameterFieldInfo = params
     rpt.Refresh()
     CrystalReportViewer1.ReportSource = rpt
     CrystalReportViewer1.ReuseParameterValuesOnRefresh = True