动态更改水晶报表的文本对象值

时间:2014-07-12 14:53:20

标签: vb.net crystal-reports

我想动态更改crystalreport的文本对象值。我使用了这段代码

PrintBillReceipt.SetParameterValue("?test", TextBox1.Text)

并返回错误"对非共享成员的引用需要对象引用。"指向" PrintBillReceipt.SetParameterValue"

导入CrystalDecisions.CrystalReports.Engine和CrystalDecisions.Shared

2 个答案:

答案 0 :(得分:0)

要动态更改文本对象的值,请按以下步骤操作:

  1. 编辑报告文件,找出文本对象所在的部分。
  2. 找出文本字段的名称。单击对象后,可以在属性窗口中找到它。
  3. 例如,如果对象位于Section2(页眉)中且对象名称为Text1,则使用下面的代码从位于表单上的TextBox中为其赋值。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Report1 As New CrystalReport1
        Dim TextObject1 As CrystalDecisions.CrystalReports.Engine.TextObject =
            Report1.Section2.ReportObjects("Text1")
    
        TextObject1.Text = TextBox1.Text
        CrystalReportViewer1.ReportSource = Report1
    End Sub
    
  4. 修改

    如果对象是参数而不是文本字段,那么您应该从"?test"中删除问号。

    PrintBillReceipt.SetParameterValue("test", TextBox1.Text)
    

答案 1 :(得分:0)

将报告对象转换为文本对象,然后设置文本。

这是一个例子:

Dim txtObj = TryCast(rpt.ReportDefinition.ReportObjects.Item("Text1"), TextObject)
    txtObj.Text = TextBox1.Text