#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. Я должен признать, что очень мало знаю о заголовках изображений и т. Д., Но, проведя небольшое исследование, я не совсем уверен, что ваш столбец данных содержит изображение.. Есть ли у вас что-нибудь еще (другой отчет/приложение/инструмент), которое успешно отобразило содержимое этого столбца в виде изображения? Если нет, то есть бесплатная пробная версия инструмента, который может очень легко выполнить эту работу, так что вы, по крайней мере, можете быть уверены, что у вас есть изображение yohz.com/siv8_details.htm
3. Ваша старательность очень ценится, как оказалось, разработчик программного обеспечения, который что-либо знает об этих столбцах в этой таблице, не полностью уточнил нужный мне столбец, что привело к предположению с моей стороны (он сказал «столбец данных», хотя на самом деле правый столбец был помечен как «formatted_event_data»). Сейчас у меня есть фотографии (УРА!), Но в других строках отображается красный крестик, и я хотел бы избавиться от них, если бы мог. Я отредактирую свой вопрос, чтобы предоставить некоторые подробности.
4. Я только что добавил к своему ответу
5. Отличная идея. Я пытался заставить его просто дать мне НУЛЬ (который в противном случае был бы пустым в строке), но использование видимости было хорошей идеей. Это меня успокаивает, большое вам спасибо.