Nous avons des rapports sur les services de rapports SQL Server. Je n'ai pas écrit alors mais je dois m'en occuper.
Ces rapports se déclenchent lorsqu'ils sont ouverts dans le navigateur, et avec les paramètres par défaut (les termes de recherche et les restrictions sont vides), ils récupèrent beaucoup de données, ce qui est lent. Le client préférerait que le rapport ne soit généré que lorsque l'utilisateur entre les paramètres et appuie sur "voir le rapport"
Malheureusement, je ne connais pas bien SSRS - comment puis-je empêcher le rapport de se déclencher lorsqu'il est ouvert?
Cliquez sur un rapport, cliquez sur "propriétés" en haut. Vous devrez peut-être attendre un peu, car le rapport lent peut être en cours d'exécution maintenant. Cliquez ensuite sur "paramètres" à gauche.
Pour chaque paramètre, assurez-vous que "Demander un utilisateur" est coché et pour au moins un paramètre, "A par défaut" n'est pas coché. Cliquez à nouveau sur "Afficher" en haut à gauche (ou retournez dans le dossier et cliquez sur le nom du rapport) pour afficher le rapport et notez que le rapport ne se déclenche pas tout de suite.
Dans le générateur de rapports, vous pouvez le faire via le menu "Filtre". Désélectionnez les valeurs d'au moins un filtre et enregistrez le rapport.
Est-il également possible d'arrêter le déclenchement des rapports lors du chargement lorsque le rapport n'a pas de paramètres?
J'ai constaté que je devais définir au moins l'un des paramètres de rapport pour ne pas avoir de valeur par défaut pour empêcher le rapport de s'exécuter automatiquement.
J'ai dû utiliser cette configuration (notez que les 3 paramètres que j'ai laissés sans valeurs par défaut acceptent Nulls pour que les utilisateurs puissent simplement cocher les cases Null):
[captures d'écran manquantes]
pour que les utilisateurs voient cela et empêcher le rapport de s'exécuter automatiquement:
[captures d'écran manquantes]
J'ai défini la valeur par défaut de l'une de mes sélections de paramètres sur une valeur de -1 qui n'existe pas (pas une valeur de paramètre valide). Cela n'a pas généré d'erreur. Il a simplement défini la liste déroulante des paramètres sur et a empêché l'exécution du rapport. Je ne pouvais pas utiliser une valeur par défaut NULL car NULL sélectionne tout, et je voulais que l'utilisateur fasse délibérément la sélection de ALL (NULL) avant l'exécution du rapport. Le rendu du rapport prend plusieurs minutes si TOUS est sélectionné.
Je l'ai fait en modifiant légèrement ma requête pour exiger des paramètres lors de son exécution.
J'ai ensuite après avoir publié le rapport sur le site de rapport, spécifié que le paramètre, devrait inviter l'utilisateur. Cela a pour effet que le rapport ne tire pas le serveur SQL à genoux lorsque les utilisateurs ouvrent simplement le rapport pour le voir.
J'ai trouvé une bonne astuce pour cela lorsque vous travaillez avec des rapports qui ont des champs facultatifs, mais tirez une énorme quantité de données si les champs facultatifs sont vides.
Étape 1: empêcher le tir automatique
Étape 2: rendre les paramètres facultatifs sans utiliser "null"
WHERE (@param="" OR column = @param)
Avec cette méthode, il y a des champs supplémentaires dont les utilisateurs finaux doivent s'inquiéter, le rapport ne se déclenchera pas jusqu'à ce qu'il soit demandé et les conditions de la clause where ne seront pas évaluées si la zone de texte est laissée vide.
remarque: si le rapport spécifie les valeurs disponibles, toute valeur non valide pour votre structure de table peut être utilisée à la place de "", vous pouvez également l'utiliser avec d'autres types de données (non-chaîne) de cette façon
Je sais que ce message est un peu ancien, mais comme j'ai une autre solution ici, je le poste juste au cas où quelqu'un en aurait besoin.
Si vous utilisez ReportViewer, il est possible de définir la propriété ShowBody = "False". Ensuite, dans l'événement OnSubmittingParameterValues, définissez la propriété ShowBody sur true. Ensuite, vous n'avez pas besoin de paramètres supplémentaires ou de paramètres sans valeur par défaut dans le rapport.
<rsweb:ReportViewer
ID="rv"
runat="server"
Width="100%"
Height="100%"
SizeToReportContent="false"
ZoomMode="PageWidth"
KeepSessionAlive="true"
ProcessingMode="Remote"
PromptAreaCollapsed="false"
InteractivityPostBackMode="AlwaysAsynchronous"
AsyncRendering="true"
ExportContentDisposition="AlwaysInline"
ShowReportBody="False"
ShowPrintButton="false"
OnSubmittingParameterValues="rv_SubmittingParameterValues"/>
Et puis dans la méthode rv_SubmittingParameterValues:
this.rv.ShowReportBody = true;
J'ai fait cela en fournissant simplement une valeur par défaut au paramètre clé qui ne renvoie aucun résultat.
J'ai trouvé que le meilleur moyen était d'ajouter un paramètre qui n'autorise pas les valeurs nulles, mais n'est pas utilisé par le rapport. Cela l'empêche de s'afficher au début, mais n'affecte pas le rapport.
Le seul inconvénient est que si vous affichez le rapport dans une visionneuse de rapports, vous avez une boîte en haut qui semble un peu étrange. Je suis sûr que vous pouvez utiliser du C #/CSS pour le cacher.
Comme je n'utilise pas une visionneuse de rapports pour afficher, uniquement pour effectuer un rendu à l'arrière, cela ne m'affecte pas.
Même si vous utilisez une visionneuse de rapports, cela est utile lors du développement!