简体   繁体   English

Crystal Report查看器中的“参数不正确”

[英]“The parameter is incorrect” in crystal report viewer

I am dynamically creating a crystal report. 我正在动态创建水晶报表。 When I run the program and click on a button, I get "Parameter is incorrect" information box. 当我运行程序并单击一个按钮时,出现“参数不正确”信息框。 How can I resolve this? 我该如何解决?

 Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.ReportSource Imports CrystalDecisions.Shared Imports CrystalDecisions.Windows.Forms Imports System.Data.SqlClient Imports System.Data.OleDb Public Class Form1 Dim objRpt As CrystalReport1 Dim con As New SqlConnection Private Function CreateSelectQueryAndParameters() As String Dim paramFields As ParameterFields Dim paramField As ParameterField Dim paramDiscreteValue As ParameterDiscreteValue paramFields = New ParameterFields Dim query As String = "SELECT " Dim columnNo As Integer = 0 If CheckBox1.Checked Then columnNo = columnNo + 1 query = query.Insert(query.Length, "pcode as Column" + columnNo.ToString()) paramField = New ParameterField() paramField.Name = "col" + columnNo.ToString() paramDiscreteValue = New ParameterDiscreteValue() paramDiscreteValue.Value = "Property Code" paramField.CurrentValues.Add(paramDiscreteValue) paramFields.Add(paramField) End If If CheckBox2.Checked Then columnNo = columnNo + 1 If query.Contains("Column") Then query = query.Insert(query.Length, ", ") End If query = query.Insert(query.Length, "pname as Column" + columnNo.ToString()) paramField = New ParameterField() paramField.Name = "col" + columnNo.ToString() paramDiscreteValue = New ParameterDiscreteValue() paramDiscreteValue.Value = "Property Name" paramField.CurrentValues.Add(paramDiscreteValue) paramFields.Add(paramField) End If For i As Integer = columnNo To 2 columnNo = columnNo + 1 paramField = New ParameterField() paramField.Name = "col" + columnNo.ToString() paramDiscreteValue = New ParameterDiscreteValue() paramDiscreteValue.Value = "" paramField.CurrentValues.Add(paramDiscreteValue) paramFields.Add(paramField) Next CrystalReportViewer1.ParameterFieldInfo = paramFields query += " FROM propdb" TextBox1.Text = query Return query End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cnn As SqlConnection Dim connString As String Dim query As String connString = "Data Source=RANJITHA-PC;Initial Catalog=hrmdb;Integrated Security=True" cnn = New SqlConnection(connString) cnn.Open() query = CreateSelectQueryAndParameters() If Not query.Contains("Column") Then MessageBox.Show("No selection to display!") Return End If Dim adepter As New SqlDataAdapter(query, cnn) Dim Ds As New DataSet2 adepter.Fill(Ds, "propdb") MsgBox(Ds.Tables(0).Rows.Count) cnn.Close() objRpt = New CrystalReport1() objRpt.SetDataSource(Ds.Tables(0)) Me.CrystalReportViewer1.ReportSource = objRpt Me.CrystalReportViewer1.Refresh() End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub End Class 

Seems you have a issue in you for-loop , should changed to 似乎您在for-loop有问题,应更改为

 For i As Integer = columnNo+1 To 2             

        paramField = New ParameterField()           
        paramField.Name = "col" + i.ToString()
        paramDiscreteValue = New ParameterDiscreteValue()
        paramDiscreteValue.Value = ""
        paramField.CurrentValues.Add(paramDiscreteValue)

        paramFields.Add(paramField)
 Next

And put a break pint in CrystalReportViewer1.ParameterFieldInfo = paramFields and check the parameter names 并在CrystalReportViewer1.ParameterFieldInfo = paramFields然后检查参数名称

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM