2009-03-26 8 views
1

J'ai un rapport SQL Reporting Services (SQL 2008 généré à l'aide de Report Builder v2.0) qui possède un paramètre entier multi sélection (dans ce cas, une liste de magasins).SSRS: paramètres ASP.NET ReportViewer réinitialisés aux valeurs par défaut lorsque vous cliquez sur Afficher le rapport

La valeur par défaut est 0 ("Tous les magasins"). Le paramètre est transmis à une procédure stockée en tant que varchar(1024).

Cela fonctionne très bien dans le Générateur de rapports ou sur le site Web de Reporting Services.

Toutefois, à partir d'un site Web ASP.NET utilisant le composant ReportViewer, les paramètres sont réinitialisés à leur valeur par défaut chaque fois que vous choisissez "Afficher le rapport".

J'ai essayé de régler la vue sur un chargement non-asynchrone (change le conteneur de rendu?) Plus tout autre paramètre que je pourrais trouver, sans succès. Est-ce que quelqu'un sait un truc pour résoudre ce problème?

Répondre

2

J'ai fait une erreur. Le contrôle ReportViewer était à l'intérieur d'une page maître. Chaque fois que le bouton "Afficher le rapport" a été cliqué, il a effectué une publication et réinitialisé la session. J'ai ajouté if (!IsPostBack) à avant la méthode d'établissement du rapport.

1

Pour ceux d'entre vous qui connaissent cette erreur pour des raisons qui ne figurent pas par l'affiche originale ...

Voici un scénario similaire.

Vous avez un rapport qui utilise un paramètre de rapport à sélection multiple. Ce paramètre est rempli par une source de données, qui base ses valeurs sur une requête de table. Lorsque vous utilisez l'option 'Select All' pour ce paramètre de rapport et que vous cliquez sur le bouton 'View Report', le paramètre est réinitialisé et votre rapport n'est pas généré.

Je crois que ce problème se produit parce que quelque chose invalide votre ensemble de données pendant que la requête est effectuée, mais je ne peux pas être certain à 100%. Ce que je sais, c'est qu'en utilisant une variable de table comme source de requête de l'ensemble de données, vous faites disparaître ce problème.

Par exemple, votre CityDataSource pourrait être complétée par la requête:

SELECT DISTINCT city, city as SortOrder from accounts 
UNION 
SELECT 'All' as city, '0' as SortOrder 
ORDER BY SortOrder 

Si vous avez des rapports établis SQL Reporting Services, vous pouvez avoir trébuché sur cette solution une ou deux fois.

Maintenant, nous changeons la requête CityDataSource pour ressembler à ce qui suit:

DECLARE @citytable TABLE (city varchar(255), sortorder varchar(255)) 
INSERT INTO @citytable (city, sortorder) VALUES 
(
SELECT DISTINCT city, city as SortOrder from accounts 
) 
SELECT city, sortorder FROM @citytable ORDER BY sortorder 

Et en faisant que les paramètres de votre rapport ne réinitialisent pas plus.

Une procédure stockée fonctionnerait également, je suppose.

1

J'ai trouvé une erreur de code similaire à l'affiche originale. Je (re) définissais les informations d'identification du serveur de rapports chaque fois que la page était chargée, au lieu de simplement quand elle était initialisée. Apparemment, la définition des informations d'identification du rapport réinitialise tous les paramètres.

Questions connexes