【问题标题】:"The parameter is incorrect" in crystal report viewer水晶报表查看器中的“参数不正确”
【发布时间】:2014-04-02 08:09:50
【问题描述】:

我正在动态创建一个水晶报表。当我运行程序并单击一个按钮时,我得到 “参数不正确” 信息框。我该如何解决这个问题?

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

【问题讨论】:

  • 它没有帮助我。请尝试解决我的代码中的问题
  • 同一个问题你不能问两次!!
  • 好的..请尝试解决这个问题
  • report is self 中的参数名称是什么?

标签: sql-server vb.net crystal-reports


【解决方案1】:

看来你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

CrystalReportViewer1.ParameterFieldInfo = paramFields 中放一个break pint 并检查参数名称

【讨论】:

  • 问题在for循环中
  • @user3422209:是的,请删除另一个问题!下一次,没有重复的问题:) 另外我建议快速查看Help Center
  • 你确定...我会删除的。下次我不会发送重复的问题。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多