Crystal Report Image Отображение в случайном порядке - PullRequest
0 голосов
/ 07 мая 2019

IM ИСПОЛЬЗУЯ VB.NET - ОТЧЕТЫ ПО SQL И КРИСТАЛЛУ

Я пытаюсь отобразить изображение в отчете Crystal Report, но изображение отображается в 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.- выберите вкладку Picture

5.- нажмите кнопку условной формулы (выглядит как x + 2)

6.- установите текст формулы в название поля формулы или параметра, которое содержит URL изображения

7.- сохраните формулу и нажмите кнопку ОК

8.- Сохранить отчет

Кроме того, я добавил в отчет строку 'image' для проверки правильности пути.

1.- Вот код изображения в отчетах о кристаллах

2.- Вот как это выглядит в режиме конструктора

3.- Вот как это выглядит, когда я запускаю отчет для определенной строки в БД

Обратите внимание, что на последнем изображении ссылки, которые я отправляю на отчет через набор данных, верны: "z: \ folder1 \ folder2 \ folder3 (имя этой папки является идентификатором строки в БД) \ name of image.jpg "

Кроме того, изображение, отображаемое на последнем изображении, является зеленым изображением, которое я использовал в качестве заполнителя вместо изображения в пути, который я отправил.

1 Ответ

0 голосов
/ 09 мая 2019

Вот как я это исправил:

Я преобразовал свое изображение в массив байтов, затем создал столбец байтового массива в моем наборе данных и, наконец, перетащил поле массива байтов в мой отчет Crystal.

Плюсы: - Динамические изображения в 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

...