【发布时间】:2017-02-28 09:22:12
【问题描述】:
我有一个我在CR2008 中制作的水晶报表,我正在从我的vb.net 应用程序中打印它。在这份报告中,我有一个图像和一个公式字段。
图像公式(在Format Graphic > Picture > Graphic Location 下设置为名为@987654327@ 的公式字段。
在我的vb.net 代码中,我有以下块从数据库中选择保存的文件路径,然后用这个值填充@imgLocation,以设置正在显示的图像。
Try
Dim logoPath As String = ds.Tables(0).Rows(0).Item("reportLogoPath") & ""
If logoPath = "" Then
MessageBox.Show("No logo path has been defined in the System Settings. Please set " & _
"one and try again.", "Load Report Failed", MessageBoxButtons.OK)
Exit Sub
Else
cReport.DataDefinition.FormulaFields.Item(2).Text = Chr(34) & logoPath & Chr(34)
End If
Catch ex As Exception
errorLog(ex)
End Try
我已经看到这个工作两次了。当我有FormulaFields.Item(2) 时,我想要的图像替换了占位符图像,但后来我调整了图像的大小并且它不起作用。然后我更改了索引的值,它与FormulaFields.Item(4) 一起工作,但在我调整图像大小时再次停止工作。
为什么索引会发生变化,以及解决方法是什么?
我尝试使用命名参数选项,但FormulaFields.Item("@imgLocation") 给了我一个错误
无效索引
编辑
根据@Bugs 的要求,这是显示正确字符串和图像的报告
然后,删除并重新保存图像后(但尺寸稍大),参数仍然正确传递,但显示的是占位符图像。
这让我现在想到它与图像大小有关,但是,将其重新调整为原始大小仍然没有再次显示。
编辑 2
这可能是因为我正在加载一个包含报表查看器的新表单,而不是从同一个表单打开它吗?
cReport.RecordSelectionFormula = selectionFormula
Me.Cursor = Cursors.Default
Dim f As New frmReportViewer(con, cReport, 0)
f.Show()
Private Sub frmReportViewer_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
setFormSizes(Me, con)
Me.Location = New Point((Screen.PrimaryScreen.WorkingArea.Width / 2) - (Me.Width / 2), 10)
Me.Text = "Report Viewer"
Dim logOnInfo As New TableLogOnInfo()
Dim i As Integer
For i = 0 To cReport.Database.Tables.Count - 1
logOnInfo.ConnectionInfo.DatabaseName = "comm_db"
logOnInfo.ConnectionInfo.Password = "Acplus2016!"
cReport.Database.Tables.Item(i).ApplyLogOnInfo(logOnInfo)
Next i
cReport.VerifyDatabase()
crViewer.ReportSource = cReport
crViewer.ToolPanelView = CrystalDecisions.Windows.Forms.ToolPanelViewType.None
crViewer.Zoom(87)
Catch ex As Exception
errorLog(ex)
End Try
End Sub
【问题讨论】:
-
@Bugs
cReport.SetParameterValue("@imgLocation", logoPath)给出同样的无效索引错误 -
@Crystal Reports 中的错误?我使用数据库专家选择我想要的表格,然后将字段拖到报告上。唯一的
SQL是在代码中从数据库表中获取图像位置,并将其分配给logoPath变量 -
只需删除我的 cmets,因为它们不再需要(不想造成混乱)。我一直在试图找到一种方法来设置图像,但我似乎找不到方法。只是想在我走另一条路之前澄清一下。您是否只在页眉中设置一个图像?我假设它是一个徽标,但只是想确认一下。
-
@Bugs 是的,报告上只会有一张图片,但不同的用户会有不同的图片,这就是我从数据库中获取它的原因
-
@Bugs 你说是参数问题还是图片问题?
标签: vb.net indexing crystal-reports formula crystal-reports-2008