水晶报表图像随机显示

时间:2019-05-07 18:51:55

标签: c# vb.net image crystal-reports report

使用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”

此外,最后一张图像中显示的图像是我用作占位符的绿色图像,而不是我发送的路径中的图像。

1 个答案:

答案 0 :(得分:0)

这里是我如何解决此问题:

我将图像转换为字节数组,然后在数据集上创建了一个字节数组列,最后将字节数组字段拖放到我的水晶报表中。

优点: -Crystal Report上的动态图像

缺点: -巨大的质量损失

一步一步

  1. 使用此功能将图像转换为字节数组:

    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