使用VB.NET的即时消息-SQL和水晶报告
我正在尝试将图像显示在Crystal报表的报告中,但是20%的时间都显示了该图像,有时它可以工作,有时却不能。
这是我的代码: 这就是我将参数传递给Crystal Report的方式。
Dim ds As New MyDS
ds.Tables(0).Rows.Clear()
All of the variables are strings and the Image ones are string Paths like this: C:\folder1\folder2\image.jpg
ds.Tables(0).Rows.Add(date, timeIn, timeOut, Load, noTrailer, noBox, seal, coment, nameDriver, company, plates, oficial, imagen1, imagen2, imagen3)
Dim cr As New MyReporte
CrystalReportViewer1.ReportSource = cr
cr.SetDataSource(ds.Tables(0))
这是我将图像添加到Crystal Report中的方式:
1.-将图像作为占位符添加到报告(“插入” |“图片”)中(我画一个绿色圆圈)。
2.-右键单击图像
3.-选择“格式化图形...”
4.-选择“图片”标签
5.-单击条件公式按钮(看起来像x + 2)
6.-将公式的文本设置为公式或参数字段的名称, 包含图片的网址
7.-保存公式,然后单击“确定”按钮
8.-保存报告
此外,我在报告中添加了'image'字符串,以查看路径是否正确。
1.- Here is the code of the image in crystal reports
2.- Here is how it looks in designer mode
3.- Here is the way it looks once I run the report for a specific row in the db
请注意在上一张图像中我通过数据集发送到报表的链接是正确的:“ z:\ folder1 \ folder2 \ folder3(此文件夹的名称是数据库中行的ID)\ name image.jpg”
此外,最后一张图像中显示的图像是我用作占位符的绿色图像,而不是我发送的路径中的图像。
答案 0 :(得分:0)
这里是我如何解决此问题:
我将图像转换为字节数组,然后在数据集上创建了一个字节数组列,最后将字节数组字段拖放到我的水晶报表中。
优点: -Crystal Report上的动态图像
缺点: -巨大的质量损失
一步一步
使用此功能将图像转换为字节数组:
Public Shared Function GetBinary(ByVal image As Image, ByVal format As ImageFormat) As Byte()
Using ms As New System.IO.MemoryStream
If (format Is Nothing) Then
format = image.RawFormat
End If
image.Save(ms, format)
Return ms.ToArray()
End Using
End Function here
要使用此功能,您必须包括以下2:
Imports System.Drawing
Imports System.Drawing.Imaging
2.-我像这样使用此功能:
imageVariable = GetBinary(pictureBox.Image, ImageFormat.Png)
这会将我的图像从PictureBox转换为字节数组,并将其存储在Byte()类型的变量中
您还可以为该函数提供图像的路径,并将其转换为字节数组,如下所示:
imageVariable = GetBinary(Image.FromFile("C:\PATHTOYOURIMAGE"), ImageFormat.Png)
我用作参考的网站:Click Me