SSRS в Visual Studio 2008: относительные пути к изображениям? - PullRequest
1 голос
/ 20 января 2009

У меня есть изображение заголовка, которое необходимо повторить в заголовке нескольких отчетов. Мне известно, что вы можете добавить изображение в отчет и указать путь к файлу изображения, например file://C:\path\to\Reports\Images\logo.gif, но этот путь может и будет меняться при развертывании приложения.

Я попытался использовать относительный путь, например (при условии, что отчеты находятся в папке Reports/) Images/logo.gif (или Images\logo.gif), но это просто приводит к повреждению изображения как в конструкторе, так и на фактическом выходе. Мой синтаксис неверен? Если нет, есть ли способ сделать что-то подобное?

РЕДАКТИРОВАТЬ: я также знаю о встраивании изображения в отчет, но тогда это изображение должно было бы быть встроено в каждый отчет, и если его нужно было изменить, его нужно было бы менять индивидуально в каждом отчете.

Ответы [ 3 ]

1 голос
/ 20 января 2009

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

Итак, у вас будет таблица с изображениями:

record1 otherdata image1.gif
record2 otherdata image2.gif

и другая таблица с системными переменными, включая

imagepath  c:\path\to\reports\images\
0 голосов
/ 03 февраля 2009

То, что мы в итоге сделали, было описано в этом блоге . Мы решили, что это достаточно хорошее решение, даже если путь пока жестко запрограммирован.

0 голосов
/ 02 февраля 2009

У нас есть динамические заголовки логотипов. Мы просто храним изображения в БД, так проще. Логотипы достаточно малы, они не сильно влияют на производительность.

Свойство Image в элементе управления Image:

=First(Fields!BlobData.Value, "spimGetReportImg")

spimGetReportImg Набор данных просто вызывает хранимую процедуру, которую мы используем для получения правильного изображения. IE:

CREATE PROCEDURE [dbo].[spimGetReportImg]
@pk
AS 
BEGIN
SET NOCOUNT ON
SELECT b.BlobData
FROM   dbo.tblBlob b
WHERE  pkBlob = @pk
...