Я сейчас занимаюсь этим, однако достичь этого было нелегко.
Я создал класс, который генерирует файлы RDLC в MemoryStream. Поток памяти RDLC отправляется в элемент управления reportViewer, который в свою очередь отображает отчет.
Во время создания файла RDLC вы можете создать встроенное изображение. Для этого я извлекаю изображение в массив байтов, а затем преобразую массив байтов в кодировку Base64. Для правильного отображения файлов RDLC требуется кодировка Base64.
Опять же, это было нелегко, поэтому вам действительно нужно сделать это, чтобы осуществить это. Если вы хотите продолжить этот метод, я могу дать вам более подробную информацию.
РЕДАКТИРОВАТЬ (Подробнее)
Вы можете получить пример кода для динамического создания файлов RDLC в GotReportViewer .
Прямая ссылка на код для VB.NET и C # .
Если вам удастся выяснить, как работает этот код, вы сможете генерировать файлы RDLC, и вам не нужно будет создавать файлы вручную. Опять же, мне нужно подчеркнуть тот факт, что вы будете много возиться, чтобы добраться туда, где вы хотите быть с этим.
Теперь, чтобы генерировать изображения, извлеките их из базы данных. Когда вы получите его обратно из базы данных (я использую большие двоичные объекты), вы получите массив байтов. Массив байтов содержит данные для изображения, но я не могу использовать его в текущем состоянии. Чтобы преобразовать его, вы можете сделать что-то вроде этого:
Dim output As String = ""
output = Convert.ToBase64String(imgByteArray)
Полученная выходная строка будет совместима с ReportViewer. Теперь вы можете динамически добавить эту строку в файл RDLC ReportViewer (файл XML). Используя примеры кода из GotReportViewer, вы можете сделать следующее:
'Inserts embedded images into the report
Overridable Function CreateEmbeddedImages() As Rdl.EmbeddedImagesType
Dim bgCell As New Rdl.EmbeddedImageType
Dim images As New Rdl.EmbeddedImagesType
bgCell.Name = "bgTableHeader"
bgCell.Items = New Object() {"image/jpeg", output}
bgCell.ItemsElementName = New Rdl.ItemsChoiceType35() {Rdl.ItemsChoiceType35.MIMEType, Rdl.ItemsChoiceType35.ImageData}
images.EmbeddedImage = New Rdl.EmbeddedImageType() {bgCell}
Return images
End Function
Тип RDL - это файл класса языка определения отчета. В основном это обратная схема RDLC XSD. Он содержит классы, которые будут использоваться для создания действительного файла XML для ваших отчетов. Он включен в ссылку GotReportViewer вверху, но вы можете создать ее самостоятельно с помощью инструмента XSD.EXE, поставляемого с Visual Studio.