Partager via


Leçon 5 : Ajout d'un paramètre de rapport à transmettre à une fonction définie par l'utilisateur

Mis à jour : 12 décembre 2006

Les paramètres de rapport peuvent être liés à des paramètres d'entrée passés à une fonction définie par l'utilisateur (ufn) ou à une procédure stockée d'une requête de dataset. Les fonctions définies par l'utilisateur peuvent retourner une valeur tableau ou scalaire (un seul résultat). Par définition, une requête de dataset extrait un seul résultat d'une fonction définie par l'utilisateur ou d'une procédure stockée. L'un des avantages d'une fonction définie par l'utilisateur par rapport à une procédure stockée est que vous pouvez l'inclure directement dans une instruction TRANSACT-SQL SELECT, combinant ainsi le résultat de la fonction avec les autres colonnes du jeu de résultats de la requête.

Les fonctions définies par l'utilisateur et les procédures stockées n'acceptent pas directement les paramètres à valeurs multiples sous forme de tableaux. Pour passer un tableau à valeurs multiples à une procédure stockée, vous pouvez utiliser la fonction Visual Basic JOIN afin de créer une chaîne concaténée de toutes les valeurs et écrire la fonction définie par l'utilisateur pour accepter un paramètre de chaîne comportant plusieurs sélections séparées par le caractère de votre choix.

La fonction définie par l'utilisateur ufnGetContactInformation accepte un identificateur de base de données pour la table Person.Contact et extrait les valeurs de ContactID, Name, Phone, EmailAddress, JobTitle et ContactType. Dans ce rapport, vous allez créer un paramètre pour permettre à l'utilisateur de choisir un sous-ensemble prédéfini de champs à afficher.

Dans cette leçon, vous allez créer un nouveau rapport intitulé « Contact Information » avec un paramètre acceptant un identificateur de base de données pour la personne répertoriée comme contact d'un revendeur. Vous allez créer une requête qui appelle la fonction définie par l'utilisateur ufnGetContactInformation à partir de la base de données AdventureWorks et lier le paramètre de rapport au paramètre d'entrée de la fonction définie par l'utilisateur @ContactID.

Vous allez préparer ce rapport pour qu'il soit utilisé comme sous-rapport du rapport Resellers Worldwide, créant des paramètres pour les couleurs d'arrière-plan et de texte à utiliser, supprimer l'espace autour du rapport et définir les marges, ainsi que la largeur du rapport. Vous créerez pour ce rapport un paramètre à valeurs multiples qui permettra au rapport principal de spécifier les champs à afficher quant aux informations sur le contact.

Pour ouvrir le projet Report Server Advanced Parameters Tutorial (Didacticiel sur les paramètres avancés)

  1. Dans SQL Server Business Intelligence Development Studio, ouvrez, s'il ne l'est déjà, le projet Report Server Advanced Parameters Tutorial (Didacticiel sur les paramètres avancés).

Pour créer un rapport à partir d'une fonction définie par l'utilisateur

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le dossier Rapports. Choisissez Ajouter, puis Nouvel élément. La boîte de dialogue Ajouter un nouvel élément s'ouvre.

  2. Dans le volet Modèles, sélectionnez Rapport.

  3. Dans la zone de texte Nom, tapez Contact Information.rdl.

  4. Cliquez sur Ajouter. Le rapport s'ouvre en mode Données.

  5. Dans la liste déroulante Dataset, sélectionnez <Nouveau dataset>. La boîte de dialogue Dataset s'affiche.

  6. Sous l'onglet Requête, dans la zone de texte Nom, tapez ContactInformation.

  7. Vérifiez que la Source de données est bien Resellers.

  8. Vérifiez que le Type de commande est bien Texte.

  9. Collez la requête suivante dans le volet de chaîne de requête.

    SELECT udf.ContactID, udf.FirstName + N' ' + udf.LastName AS Name,
       c.Phone, c.EmailAddress, udf.JobTitle, udf.ContactType
       FROM ufnGetContactInformation(@ContactID) udf
       JOIN Person.Contact c ON udf.ContactID = c.ContactID
    

    Cette requête utilise un paramètre appelé @ContactID pour passer un identificateur de base de données à la fonction définie par l'utilisateur ufnGetContactInformation, qui accepte ContactID comme paramètre d'entrée.

  10. Cliquez sur le bouton Exécuter (!) de la barre d'outils. La boîte de dialogue Définir les paramètres de la requête s'affiche.

  11. Dans la colonne Valeur du paramètre, pour @ContactID, tapez 1. Le jeu de résultats affiche les informations pour le contact de magasin identifié par ContactID. Les colonnes retournées dans le jeu de résultats sont définies dans la fonction utilisateur.

  12. (Facultatif) Vérifiez que le paramètre de requête @ContactID est lié au paramètre de rapport ContactID. À partir de la barre d'outils du rapport, cliquez sur Modifier le dataset sélectionné(…), puis sur l'onglet Paramètres. Le paramètre @ContactID est défini avec la valeur =Parameters!ContactID.Value.

Dans la procédure suivante, vous allez créer une valeur par défaut pour le paramètre de rapport ContactID. En fournissant une valeur par défaut pour chaque paramètre, le rapport s'exécute automatiquement quand vous cliquez sur Aperçu.

Pour ajouter une valeur par défaut pour ContactID

  1. Dans le menu Rapport, sélectionnez Paramètres du rapport. La boîte de dialogue Paramètres du rapport s'ouvre et affiche le paramètre ContactID sélectionné dans le volet Paramètres.

  2. Dans la section Valeurs par défaut de la section Propriétés, sélectionnez Sans requête. Tapez 1.

  3. Cliquez sur OK.

Dans la prochaine procédure, vous allez créer un paramètre de chaîne à valeurs multiples permettant de sélectionner les informations sur le contact que vous souhaitez afficher. Vous allez créer une liste de valeurs disponibles sans requête pour Phone, Email ou None.

Pour créer le paramètre de rapport FieldsToDisplay

  1. En mode Mise en page, dans le menu Rapport, sélectionnez Paramètres du rapport. La boîte de dialogue Paramètres du rapport s'ouvre.

  2. Cliquez sur Ajouter. Un nouveau paramètre est créé avec des valeurs par défaut.

  3. Dans la section Propriétés, dans la zone de texte Nom, tapez FieldsToDisplay. Vérifiez que le type de données est String.

  4. Dans Demander, tapez Select contact information to display:(Sélectionner les informations de contact à afficher :).

  5. Sélectionnez l'option Valeurs multiples.

  6. Assurez-vous que l'option Autoriser une valeur vide est sélectionnée.

  7. Dans la section Valeurs disponibles, sélectionnez Sans requête. Entrez les valeurs à l'aide du tableau suivant.

Étiquette Valeur

Phone

Phone

Email

EmailAddress

None

<Vide>

Si un paramètre possède des valeurs disponibles, vous devez fournir une valeur disponible égale à <Vide> pour sélectionner l'option Autoriser une valeur vide.

Dans la procédure suivante, vous allez créer la mise en page du rapport. Comme le rapport va être utilisé dans un rapport principal comme sous-rapport, la mise en page s'en trouve simplifiée : une zone de texte pour afficher le nom du contact et sa fonction, et une autre zone de texte pour afficher de façon conditionnelle l'adresse électronique et le téléphone.

Pour créer la mise en page du rapport pour ces informations

  1. Cliquez sur l'onglet Mise en page. Le rapport s'ouvre en mode Mise en page.

  2. À partir de la boîte à outils, faites glisser un élément de rapport de tableau vers la surface de dessin.

  3. Cliquez avec le bouton droit sur un en-tête de colonne et sélectionnez Supprimer les colonnes. Il reste deux colonnes.

  4. Collez l'expression suivante dans la première zone de texte de la ligne de détails :

    =Fields!Name.Value & vbCrLf & "[ " & Fields!JobTitle.Value & " ]"
    
  5. Collez l'expression suivante dans la seconde zone de texte de la ligne de détails :

    =IIF((Parameters!FieldsToDisplay.Count=1) AND 
       (InStr("None",Parameters!FieldsToDisplay.Label(
              Parameters!FieldsToDisplay.Count-1))>0),"",
        IIF(InStr(Join(Parameters!FieldsToDisplay.Value,","),
           "EmailAddress")>0,Fields!EmailAddress.Value,"") + 
    vbCrLf + IIF(InStr(Join(Parameters!FieldsToDisplay.Value,","),
           "Phone")>0,Fields!Phone.Value,""))
    

    Cette expression examine simplement les valeurs sélectionnées pour le paramètre à valeurs multiples FieldsToDisplay. Si la valeur NONE est sélectionnée (un paramètre et un seul, avec l'étiquette None), l'expression est analysée comme vide. Si EmailAddress est présent, une partie de l'expression est analysée comme « EmailAddress ». Si Phone est présent, une partie de l'expression est analysée comme « Phone ». Ces deux valeurs sont concaténées avec un retour chariot. La totalité de l'expression évaluée s'affiche dans le contenu de la seconde zone.

    Cet exemple illustre les points suivants :

    • Recherche du nombre de valeurs sélectionnées dans un paramètre à valeurs multiples : Parameters!FieldsToDisplay.Count
    • Pour un paramètre à valeurs multiples, test de la dernière étiquette du tableau pour une chaîne spécifique (dans ce cas, « None ») : InStr("None",Parameters!FieldsToDisplay.Label(Parameters!FieldsToDisplay.Count-1))>0
    • Retour conditionnel d'une chaîne selon qu'une valeur a été trouvée ou non dans un paramètre à valeurs multiples (recherche dans la chaîne concaténée de toutes les valeurs sélectionnées du paramètre à valeurs multiples FieldsToDisplay ; si EmailAddress est trouvé, retour de la valeur spécifique d'EmailAddress à partir du dataset et, dans le cas contraire, retour d'une valeur vide) : IIF(InStr(Join(Parameters!FieldsToDisplay.Value,","),"EmailAddress")>0,Fields!EmailAddress.Value,"")
    Aa337435.note(fr-fr,SQL.90).gifRemarque :
    Comme la fonction Visual Basic IIF analyse toutes les valeurs des paramètres de fonction qui lui sont passées, il n'est pas possible d'utiliser cette expression avec des champs de dataset pouvant avoir la valeur Null.
  6. (Facultatif) Cliquez sur Aperçu. Modifiez les valeurs des deux paramètres et observez les résultats obtenus.

Dans la procédure suivante, vous allez mettre en forme ce rapport à utiliser comme sous-rapport afin qu'il s'affiche correctement au sein du rapport principal, en désactivant l'en-tête et le pied de page, en définissant la largeur du tableau, en supprimant les espaces superflus et en définissant la police et l'arrière-plan pour qu'ils correspondent à ceux du rapport principal. Vous allez aussi fournir des paramètres de telle sorte que la couleur d'arrière-plan et la couleur de police puissent être passées comme paramètres depuis le rapport principal.

Pour supprimer les espaces et définir la taille du rapport

  1. Cliquez à l'intérieur du tableau pour afficher ses poignées.

  2. Cliquez avec le bouton droit sur la poignée de la ligne de détails. Dans le menu contextuel, sélectionnez En-tête du tableau et Pied de page du tableau, puis définissez-les à la valeur Off. Le tableau affiche simplement une ligne de détails.

    Dans les trois prochaines étapes, vous devez ajuster la largeur du tableau à une taille connue. Vous aurez besoin de cette taille dans la prochaine leçon quand vous ajouterez un élément de rapport de sous-rapport au rapport principal.

  3. Sélectionnez le tableau. Dans la fenêtre Propriétés, vérifiez que le tableau a 3 pour largeur. Ajustez cette valeur à la valeur minimale nécessaire pour visualiser les informations sur le contact.

    La largeur de tableau que vous définissez pour le sous-rapport détermine l'aspect du sous-rapport quand il s'affiche dans le rapport principal. Pour définir une taille fixe pour le sous-rapport, définissez la hauteur et la largeur aux valeurs de votre choix. Vous pouvez également définir les propriétés CanGrow et CanShrink d'une zone de texte pour lui permettre de croître ou de diminuer verticalement afin de s'adapter au contenu du texte. CanGrow et CanShrink ne s'appliquent pas à la largeur horizontale. Vous ne pouvez pas actuellement définir une zone de texte pour qu'elle ajuste automatiquement sa largeur en fonction du texte.

  4. Sélectionnez la première zone de texte de l'en-tête de colonne. Dans la fenêtre Propriétés, faites défiler l'écran jusqu'à Largeur et entrez 1,5 ou, à l'aide de l'unité de mesure par défaut, la valeur de votre choix pour définir la largeur jusqu'à la moitié du tableau.

  5. Sélectionnez la seconde zone de texte de l'en-tête de colonne. Dans la fenêtre Propriétés, faites défiler l'écran jusqu'à Largeur et entrez 1,5 ou, à l'aide de l'unité de mesure par défaut, la valeur de votre choix pour définir la largeur jusqu'à la moitié du tableau.

  6. Sélectionnez le tableau. À l'aide des touches de direction, déplacez le tableau vers le haut de la page du rapport et alignez le bord du tableau avec celui du rapport.

  7. Avec la souris, pointez sur le bord de la surface du rapport (arrière-plan blanc en pointillés). Quand la souris prend la forme d'une flèche à deux pointes, saisissez le bord de la surface du rapport et déplacez-le à côté de celui du tableau. De cette façon, quand le rapport est affiché, les espaces sont supprimés.

  8. De même, supprimez l'espace en bas de la page du rapport en déplaçant la surface du rapport à côté du bas du tableau.

Pour ajouter des paramètres afin de définir des couleurs

  1. En mode Mise en page, dans le menu Rapport, sélectionnez Paramètres du rapport. La boîte de dialogue Paramètres du rapport s'ouvre.

  2. Cliquez sur Ajouter. Un nouveau paramètre est créé avec des valeurs par défaut.

  3. Dans la section Propriétés, dans la zone de texte Nom, tapez BackgroundColor. Vérifiez que le type de données est String.

  4. Sélectionnez l'option Masquée. La zone de texte Demander est désactivée.

  5. Désactivez la case à cocher Autoriser une valeur vide.

  6. Dans la section Valeurs disponibles, vérifiez que l'option Sans requête est bien sélectionnée. Laissez vide le tableau de valeurs.

  7. Dans la section Valeurs par défaut, sélectionnez Sans requête et tapez Azure.

    Les valeurs de paramètres transmises depuis le rapport principal à un sous-rapport seront utilisées dans le sous-rapport. Si le rapport principal ne spécifie pas de valeur pour un paramètre particulier, la valeur par défaut du paramètre de sous-rapport est utilisée.

  8. Créez un nouveau paramètre appelé FontColor en suivant les étapes 1 à 6.

  9. Dans la section Valeurs par défaut, sélectionnez Sans requête et tapez SteelBlue.

  10. Cliquez sur OK.

  11. En mode Mise en page, cliquez avec le bouton droit sur la ligne de détails du tableau. Dans la fenêtre Propriétés, faites défiler l'écran jusqu'à BackgroundColor. Définissez la valeur avec l'expression suivante :

    =Parameters!BackgroundColor.Value
    
  12. Dans la fenêtre Propriétés, faites défiler l'écran jusqu'à Color. Définissez la valeur avec l'expression suivante :

    =Parameters!FontColor.Value
    
  13. Cliquez sur Aperçu. Vérifiez que l'arrière-plan de la ligne du tableau et la couleur de police sont définis avec les valeurs des paramètres BackgroundColor et FontColor.

Pour ajouter une description du rapport

  1. Cliquez sur l'onglet Mise en page.

  2. Dans le menu Rapport, sélectionnez Propriétés du rapport. La boîte de dialogue Propriétés du rapport s'ouvre.

  3. Dans la zone de texte Description, tapez le texte suivant : Subreport to show contact information. (Sous-rapport destiné à afficher les informations sur le contact.)

  4. Cliquez sur OK.

Étapes suivantes

Vous avez créé avec succès un rapport permettant d'afficher les informations de contact d'un revendeur. Vous avez mis le rapport en forme pour qu'il soit utilisé comme sous-rapport en définissant sa largeur, en enlevant les espaces superflus et en créant des paramètres pour contrôler l'aspect et le contenu. Dans la prochaine leçon, vous allez ajouter ce rapport au rapport Resellers Worldwide en tant que sous-rapport. Voir Leçon 6 : Ajout d'un sous-rapport avec des paramètres.

Historique des modifications

Version Historique

12 décembre 2006

Contenu modifié :
  • Correction de l'exemple de code par udf.ContactID = c.ContactID.

Voir aussi

Autres ressources

Utilisation de paramètres dans Reporting Services
Notions fondamentales sur les fonctions définies par l'utilisateur

Aide et Informations

Assistance sur SQL Server 2005