SSRS: Отображение изображения из столбца varbinary в базе данных

#sql-server #reporting-services

Вопрос:

Мои извинения, если я что-то пропустил, но из того, что я нашел здесь, на SOF, а также на других сайтах, я не могу найти свою проблему обсуждаемой. Мне нужно отобразить изображение, существующее в SQL Server, в виде varbinary столбца.

 SELECT 
    photo = CASE WHEN event_id = 47 THEN e.data ELSE NULL END
 

введите описание изображения здесь

Вот первые 8 байтов: 0x2D00000030303030 и мне сказали, что это JPEG.

Мои попытки до сих пор включают следующую настройку образа SSRS:

введите описание изображения здесь

Однако я все равно получаю красный крестик в самом отчете.

введите описание изображения здесь

Теперь я видел страницу, на которой описывается размещение изображений в отдельной таблице, но я не верю, что это сработает для моих целей, потому что мне нужно, чтобы изображение отображалось в одном и том же табликсе только с определенными строками. Мое текущее понимание SSRS предполагает только один набор данных для каждого табликса, поэтому я не могу «объединить» две таблицы в один табликс. Было бы решением использовать этот отдельный табличный подход, но затем присоединиться к моему существующему набору данных?


ПРАВКА 1: После отображения изображений у меня есть ошибочные красные крестики, где ничего не должно отображаться, вероятно, из-за выражения, которое я использую. ПРИМЕЧАНИЕ: Это оказался base64, с которого мне пришлось декодировать. System.Convert.FromBase64String(Fields!photo.Value)

Я попробовал следующее выражение, чтобы избавиться от крестиков, но оно не работает: =iif(isnothing(Fields!photo.Value)=1,nothing,System.Convert.FromBase64String(Fields!photo.Value))

введите описание изображения здесь

Есть какие-нибудь идеи?

Ответ №1:

Попробуйте использовать следующее в выражении «Использовать это поле»

 =System.Convert.ToBase64String(Fields!myImageColumn.Value)
 

Я не знаю, относится ли ваше изображение к этому типу, но у меня была та же проблема много лет назад, и я преобразовал его с помощью описанного выше, что сработало. Кроме того, попробуйте изменить тип MIME на image/png просто на случай, если вас неправильно информировали.

Редактировать после обновления из OP

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

  1. Установите видимость заполнителя изображения на основе содержимого столбца изображения (пустого или нет). Я не понимаю, почему бы не сработать, но на всякий случай…
  2. Добавьте пустое изображение в базу данных и используйте его, если реального изображения не существует.

Комментарии:

1. Спасибо. Я почти уверен, что это одна из вещей, которые я нашел и попробовал, но я попробовал еще раз, как и с любым другим типом изображений, но безуспешно.

2. Я должен признать, что очень мало знаю о заголовках изображений и т. Д., Но, проведя небольшое исследование, я не совсем уверен, что ваш столбец данных содержит изображение.. Есть ли у вас что-нибудь еще (другой отчет/приложение/инструмент), которое успешно отобразило содержимое этого столбца в виде изображения? Если нет, то есть бесплатная пробная версия инструмента, который может очень легко выполнить эту работу, так что вы, по крайней мере, можете быть уверены, что у вас есть изображение yohz.com/siv8_details.htm

3. Ваша старательность очень ценится, как оказалось, разработчик программного обеспечения, который что-либо знает об этих столбцах в этой таблице, не полностью уточнил нужный мне столбец, что привело к предположению с моей стороны (он сказал «столбец данных», хотя на самом деле правый столбец был помечен как «formatted_event_data»). Сейчас у меня есть фотографии (УРА!), Но в других строках отображается красный крестик, и я хотел бы избавиться от них, если бы мог. Я отредактирую свой вопрос, чтобы предоставить некоторые подробности.

4. Я только что добавил к своему ответу

5. Отличная идея. Я пытался заставить его просто дать мне НУЛЬ (который в противном случае был бы пустым в строке), но использование видимости было хорошей идеей. Это меня успокаивает, большое вам спасибо.