2009-08-13 15 views
3

J'essaie d'utiliser l'accès URL pour extraire certains rapports des services de rapports de SQL Server 2008. L'un des paramètres que je dois transmettre est un Guid. Lorsque je colle juste le guid dans l'URL commePasser le guide au paramètre d'accès Url 2008 de SSRS

&LoggerID=CD4869DC-68B8-4513-B3C6-0E6DD9F74380 

Je reçois l'erreur: Valeur par défaut ou la valeur fournie pour le paramètre de rapport « LoggerID » est pas une valeur valide. (rsInvalidReportParameter)

J'ai essayé les guillemets simples et les accolades. Qu'est-ce que je rate? Le passage d'un Guid dans ce format à l'un de mes propres rapports fonctionne correctement.

Répondre

2

Il s'avère que lorsque vous définissez les valeurs disponibles pour un paramètre comme "Get values ​​from Query", il n'acceptera pas le guid dans l'URL. Dès que je l'éteins, ça marche. Cela semble seulement être un problème pour les GUID comme je le fais avec un nombre entier et cela fonctionne bien.

En relation: 2008 utilise toujours la chaîne comme type de paramètre.

+0

Je peux le confirmer. Dans mon cas, je dois être en mesure d'ouvrir le rapport avec le paramètre URL ou sans. Si param n'est pas spécifié, il doit avoir une valeur par défaut. Ma solution: créer deux paramètres. @First est rempli de requête et a une valeur par défaut. @Second est null par défaut. Je peux alors mettre le @Second sur l'URL et utiliser les deux dans la requête en utilisant ISNULL (@Second, @First). –

1

Je remarque que votre message d'erreur parle d'un paramètre appelé "LoggerID" mais votre URL utilise "guid" comme nom de paramètre. Ce n'est pas quelque chose de simple comme ça?

Notez également que (selon mon expérience) les paramètres d'URL SSRS sont sensibles à la casse. Si vous passez "loggerid = ..." sur l'URL et que votre paramètre s'appelle "LoggerID", alors vous recevrez un message d'erreur (bien que ce ne soit pas l'erreur que vous décrivez, donc je doute que ce soit le problème).

Mise à jour

Je viens d'avoir un regard sur le rapport de la mine en mode de conception, et il utilise en fait pour le type de paramètre « String ». Dans SSRS 2005, il n'y a pas d'option pour utiliser un Guid. Cela pourrait être une option pour vous (changez le paramètre en chaîne et cast dans la requête), même si ce serait un peu un hack.

+0

désolé mon code était un exemple. J'utilise LoggerID cas correct dans la chaîne. – jimconstable

+0

Je suppose que vous utilisez 2008? – jimconstable

+0

Non, je suis juste sur 2005. Peut-être que la fonctionnalité a changé en 2008. Cela ne semble pas logique. –

3

Je viens de rencontrer ce problème et il s'est avéré être un problème avec la capitalisation des lettres à l'intérieur du Guid.

Comme SSRS ne comprend pas les identificateurs uniques, il les traite simplement comme des chaînes. Donc, si vous avez une option 'Obtenir des valeurs de la requête' pour ce paramètre, le paramètre url que vous passez doit correspondre au caractère de résultat de la requête pour le caractère. Signification capitalisation correspondant

Il a échoué quand sur l'URL que j'avais

&entityIdentifier=75745B11-09B8-4BF6-98EF-F3E8A2ACEC05 

mais travaillé quand j'ai changé que pour

&entityIdentifier=75745b11-09b8-4bf6-98ef-f3e8a2acec05 
+0

J'ai également trouvé que vous devez vous assurer que vous êtes sur la section 'ReportServer' et non sur la section 'Report'. La vérification va comme suit: si vous avez ** http: // [adresse] /*Reports*/...** c'est faux ... Il doit être ** http: // [adresse]/* ReportServer */... ** –

0

Je viens de croiser des questions et essayer de passer un paramètre GUID dans via une URL. Ma solution consistait à convertir l'identificateur unique en un varchar (36) dans la requête Dataset utilisée pour les valeurs disponibles du paramètre. Ensuite, comme d'autres l'ont mentionné, il était nécessaire de s'assurer que l'enveloppe du GUID dans l'URL correspondait à l'enveloppe dans l'ensemble de données de valeurs disponibles.

Valeurs disponibles Dataset exemple de requête:

SELECT CAST(MyGuidColumn AS varchar(36)) AS MyGuidColumn, MyLabelColumn 
FROM MyTable 
0

J'ai eu le même problème couple de fois, pour une raison Guid dans l'URL doit venir en minuscules sinon il ne l'acceptera pas.

Assurez-vous que votre Guid est formaté en minuscules.

Questions connexes