L'utilisation de Paramètres dans MS Reporting Services (SQL Server 2008) par rapport à une source de données ODBC

StackOverflow https://stackoverflow.com/questions/9275

Question

J'ai écrit un rapport dans Visual Studio qui permet à l'utilisateur de paramètre d'entrée et va à l'encontre d'une source de données ODBC.Je voudrais écrire manuellement la requête et des rapports des services de remplacer une partie de la clause where avec la valeur de paramètre avant de l'envoyer à la base de données.Ce qui semble se passer, c'est que l' @parmName Je suis en supposant que sera remplacé est en fait envoyé dans le cadre de l'instruction SQL.Je manque un paramètre de configuration quelque part ou est-ce tout simplement pas possible?

Je ne suis pas à l'aide de l'option de filtre dans l'outil, car cela semble ramener l'ensemble des données de la base de données et de faire le filtrage sur le Serveur SQL.

Était-ce utile?

La solution

Il semble que vous aurez besoin pour traiter l'Instruction SQL comme une expression.Par exemple:

="Select col1, col2 from table 1 Where col3 = " & Parameters!Param1.Value 

Si la clause where est une chaîne, vous devrez effectuer les opérations suivantes:

="Select col1, col2 from table 1 Where col3 = '" & Parameters!Param1.Value & "'"

Important:Ne pas utiliser les sauts de ligne dans votre expression SQL.Si vous le faites, vous obtiendrez une erreur.

Holla back si vous avez besoin de plus d'aide.

Autres conseils

Ne pas ODBC à utiliser l'ancienne "?" syntaxe pour les paramètres?Essayez ceci:

select col1, col2 from table1 where col3 = ?

L'ordre de vos paramètres devient important, mais il est moins vulnérable à l'injection de code SQL que de simplement en ajoutant la valeur du paramètre.

Rencontré le même problème en essayant de faire des requêtes sur une base de données access via ODBC.

Ma requête d'origine: SELECT A.1 FROM A WHERE A.1 = @parameter entraîné dans l'erreur.Modifié pour: SELECT A.1 FROM A WHERE A.1 = ?.

Vous avez alors à la carte le paramètre de requête avec votre paramètre de rapport.

Je suis un peu confus au sujet de cette question, si vous êtes à la recherche pour les simples d'utilisation de ce paramètre alors la notation est :*paramName* cependant si vous souhaitez modifier structurellement l' WHERE clause (comme vous pouvez vous en sql+ à l'aide ?) alors vous devez vraiment être à l'aide d'un code personnalisé dans le rapport pour définir une fonction qui renvoie le nécessaire sql de la requête.

Malheureusement, lors de l'utilisation d'un code personnalisé, paramètres ne peuvent pas être référencé directement dans la requête générée, mais ont y avoir des valeurs concaténées dans la Chaîne résultante, introduisant ainsi le potentiel pour SQL l'injection.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top