2010-04-22 5 views
4

Mon SSRS rapport charges images de logo pour chaque client à partir d'un numéro de client dossier spécifique sur le serveur de rapports.SSRS: Rapport chargement d'images externes, image not found, puis-je masquer le contrôle de l'image

J'écris une expression, pour former mon URL de l'image basée sur e numéro de client.

..."http://localhost/images/" + iCustomerNumber.ToString() + "/logo.gif" 

Je suis en mesure d'obtenir ce travail, mais le problème que je le visage est, quand un client particulier ne dispose d'une image, puis mon rapport montre une marque rouge X à la place du logo. Dans ce cas, je pense à cacher le contrôle de l'image elle-même. Des pensées????

L'autre solution sale sera de faire en sorte que chaque dossier spécifique client a l'image désignée! même s'il n'y a pas de logo pour un client, je vais placer un blank.gif ou un spacer.gif de probablement un pixel carré en dimension !.

Répondre

5

Vous pouvez essayer d'ajouter un code personnalisé et l'utiliser dans la propriété Image.Value pour charger une image par défaut si aucune image se trouve:

Public Function GetImage(ByRef CustomerNumber As String) As String 
    ' Customer image 
    Dim ImageCustomerURL As String 
    ImageCustomerURL = "http://localhost/images/" + CustomerNumber + "/logo.gif" 
    ' Default Image if customer image does not exist 
    Dim ImageDefaultURL As String 
    ImageDefaultURL = "http://localhost/images/default.gif" 

    ' Create a web request to see if customer image exists 
    Dim m_Req As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(ImageCustomerURL) 
    Try 
     Dim HttpWResp As System.Net.HttpWebResponse = CType(m_Req.GetResponse(), System.Net.HttpWebResponse) 
     If HttpWResp.StatusCode = System.Net.HttpStatusCode.OK 
      Return ImageCustomerURL 
     Else 
      Return ImageDefaultURL 
     End If 
    Catch ex As System.Net.WebException 
     If ex.Status = System.Net.WebExceptionStatus.ProtocolError Then 
      Return ImageDefaultURL 
     End If 
    End Try 
    Return ImageDefaultURL 
End Function 

Ensuite, l'expression de votre propriété Image.Value est:

=Code.GetImage(iCustomerNumber.ToString()) 

Edit: Définissez la propriété Visibility.Hidden plutôt que d'utiliser une image par défaut

Eh bien, je pensais que ça pourrait être plus agréable d'avoir une image par défaut plutôt que d'un espace vide, mais il est vraiment la même idée:

Public Function HideImage(ByRef CustomerNumber As String) As Boolean 
    ' Customer image 
    Dim ImageCustomerURL As String 
    ImageCustomerURL = "http://localhost/images/" + CustomerNumber + "/logo.gif" 

    ' Create a web request to see if customer image exists 
    Dim m_Req As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(ImageCustomerURL) 
    Try 
     Dim HttpWResp As System.Net.HttpWebResponse = CType(m_Req.GetResponse(), System.Net.HttpWebResponse) 
     If HttpWResp.StatusCode = System.Net.HttpStatusCode.OK 
      Return False 
     Else 
      Return True 
     End If 
    Catch ex As System.Net.WebException 
     If ex.Status = System.Net.WebExceptionStatus.ProtocolError Then 
      Return True 
     End If 
    End Try 
    Return True 
End Function 

Ensuite, votre expression de propriété Visibility.Hidden est:

=Code.HideImage(iCustomerNumber.ToString()) 
+0

Je cherchais à cacher le contrôle !! ! Je peux revenir à la solution sale comme je l'ai mentionné, si la visibilité ne peut pas être modifiée. Je pourrais avoir une image par défaut dans le dossier racine lui-même. Plutôt dupliqué dans chaque sous-dossier, en ligne avec votre solution de "ImageDefaultURL", pour être plus précis! – Nauman

+0

de visibilité du cours peut être modifié - cacher le contrôle est vraiment la même idée. La première solution ayant une image par défaut à un endroit signifie que vous n'avez pas à répliquer l'image dans chaque dossier de client selon votre solution sale - elle existe simplement au même endroit, mais s'il y a une image client, elle s'affiche à la place. –