2015-09-18 2 views

Répondre

0

Il est acheived comme si ...

Ajouter un jeu de données:

  • 'ensembles de données' clic droit et ajouter un nouvel ensemble de données
  • Nom il
  • Sélectionnez « Utiliser un ensemble de données intégré dans mon rapport '
  • Coller la requête qui retourne une seule liste de colonnes dans la boîte de requête
  • Cliquez sur OK

Ajouter un paramètre:

  • clic droit Paramètres et ajouter de nouveaux paramètres

Set:

  • Valeurs disponibles
  • Obtenir des valeurs d'une requête

maintenant:

  • Sélectionnez ensemble de données, champ de valeur et sur le terrain étiquette
  • Faites la même chose pour les valeurs par défaut

Maintenant, modifier la principale requête de dataset (clic droit et modifier) ​​pour inclure des paramètres c'est à dire @???? où ???? est le nom de votre ensemble de données.

par exemple. Pour un ensemble de données appelé « Nom », vous pouvez changer votre requête

SELECT * FROM tbl WHERE Name = @Name 

... et cela peut être répété autant de fois que vous le souhaitez: Aperçu, enregistrez, fermez et déployer.

EDIT.

Si vous activez «permettre de sélectionner plusieurs valeurs», le paramètre sera une liste de valeurs délimitée par des virgules.

Pour cela, vous aurez besoin d'une requête comme:

SELECT RTRIM(LTRIM(Item)) AS Name INTO #Names FROM dbo.f_split(@Name, ',') 

SELECT * FROM tbl WHERE Name IN (SELECT Name FROM #Names) 

REMARQUE:

Créer la fonction f_split ce qui suit:

FONCTION CREER [dbo].[F_split] ( @ItemList NVARCHAR (4000), @delimiter CHAR (1) ) RETOURS TABLE @IDTable (Point VARCHAR (100))
AS

BEGIN DECLARE
@tempItemList NVARCHAR (4000) SET @tempItemList = @ItemList

DECLARE @i INT  
DECLARE @Item NVARCHAR(4000) 

SET @i = CHARINDEX(@delimiter, @tempItemList) 

WHILE (LEN(@tempItemList) > 0) 
BEGIN 
    IF @i = 0 
     SET @Item = @tempItemList 
    ELSE 
     SET @Item = LEFT(@tempItemList, @i - 1) 
    INSERT INTO @IDTable(Item) VALUES(RTRIM(@Item)) 
    IF @i = 0 
     SET @tempItemList = '' 
    ELSE 
     SET @tempItemList = RIGHT(@tempItemList, LEN(@tempItemList) - @i) 
    SET @i = CHARINDEX(@delimiter, @tempItemList) 
END 
RETURN 

END