1

J'ai une image d'en-tête qui doit être répétée dans l'en-tête de plusieurs rapports. Je suis conscient que vous pouvez ajouter une image à un rapport et pointer vers un chemin où le fichier image réside, comme file://C:\path\to\Reports\Images\logo.gif, mais ce chemin peut et va changer lorsque l'application est déployée.SSRS dans Visual Studio 2008: chemins d'image relatifs?

J'ai essayé d'utiliser un chemin relatif comme (en supposant que les rapports sont dans le dossier Reports/) Images/logo.gif (ou Images\logo.gif), mais cela produit juste une image brisée à la fois dans le concepteur et la sortie réelle. Ma syntaxe est-elle incorrecte? Sinon, y a-t-il un moyen de faire quelque chose comme ça?

EDIT: Je sais également comment incorporer une image dans un rapport, mais cette image doit être intégrée dans chaque rapport et, si elle doit être modifiée, elle doit être modifiée individuellement dans chaque rapport.

+0

Quel type de rapports? Cristal? –

+0

SQL Reporting Services, je pense que ça s'appelle? L'autre type de rapport non-Crystal que vous pouvez créer dans Visual Studio. – adamjford

Répondre

0

Ce que nous avons fini par faire a été décrit dans this blog post. Nous avons décidé qu'il était assez bon d'une solution, même si le chemin est, pour l'instant, codé en dur ici.

1

Enregistrez le chemin dans une variable de votre base de données et conservez uniquement le nom du champ pour chaque image de votre table. Mettez-les ensemble lors de l'exécution de votre application.

Ainsi, vous aurez une table avec des images:

record1 otherdata image1.gif 
record2 otherdata image2.gif 

et une autre table qui a des variables du système, y compris

imagepath c:\path\to\reports\images\ 
+0

Désolé, j'ai clarifié ma question. L'image ne fait pas partie des données du rapport. c'est seulement un logo dans l'en-tête. – adamjford

+0

Ok, mais vous ne pouvez toujours pas stocker le chemin dans la base de données? Donc, lorsque le rapport est régénéré, il va vérifier et utiliser l'instance actuelle du chemin? Cependant, comme je n'utilise pas les services SQL Reporting, je ne sais pas comment cela fonctionne. – thursdaysgeek

0

Nous avons des logos d'en-tête dynamique. Nous stockons simplement les images dans le db, c'est plus facile de cette façon. Les logos sont assez petits, ils ne créent pas beaucoup de coup de performance.

propriété Image sur le contrôle de l'image:

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

spimGetReportImg Dataset appelle simplement la procédure stockée que nous utilisons pour obtenir l'image de droite. IE:

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