2017-03-29 4 views
1

J'ai un rapport SQL Server qui demande une date d'importation. Plus tard, je passe cette date à une procédure pour obtenir les données (dbo.spGetData). Ma procédure pour obtenir les dates d'importation disponibles ressemble à ceci:SQL Report Builder: Date de retour uniquement pour les valeurs de paramètre disponibles

ALTER PROCEDURE dbo.spGetImportDates 
AS 
BEGIN 
    SELECT CONVERT(DATE, i.ImportDate) ImportDate 
    FROM dbo.Import i 
    ORDER BY i.ImportDate DESC 
END 

Dans le rapport que j'ai ajouté ce SP comme un nouvel ensemble de données et sélectionné comme « valeurs disponibles » pour le paramètre Date/Time@importDate pour obtenir un menu déroulant. Jusqu'ici tout va bien. Le problème est que le temps est également inclus dans le jeu de résultats quand je le laisse comme ceci:

+---------------------+ 
| ImportDate   | 
+---------------------+ 
| 29.03.2017 00:00:00 | 
| 25.03.2017 00:00:00 | 
| ...     | 
+---------------------+ 

Je ne pouvais trouver aucune option pour changer le format de l'invite de paramètre. J'ai même essayé d'utiliser la requête SELECT directement dans le concepteur de requêtes de l'ensemble de données mais j'ai obtenu les mêmes résultats. Dois-je vraiment l'utiliser comme paramètre de texte, puis le reconvertir en DATE dans la procédure dbo.spGetData ou y at-il une autre solution?

Répondre

2

Laissez la colonne ImportDate dans la procédure stockée comme DATE type de données. Accédez à votre ensemble de données dans SSRS et cliquez sur 'Champs'. Ajouter un nouveau champ calculé, nommez-le ImportDateLabel et le définir comme l'expression suivante:

=Format(Fields!ImportDate.Value,"dd/mm/yyyy") 

Allez maintenant à votre paramater, cliquez sur « valeurs disponibles » et changer le « champ Label » pour référencer le nouveau champ ImportDateLabel . Laissez le champ 'Value' pointant sur le champ ImportDate.

+0

Merci! Exactement ce que je cherchais :) btw j'ai dû utiliser 'MM' au lieu de' mm' pour le mois. –

+1

Content d'avoir aidé. C'est toujours une bonne idée de laisser n'importe quelle mise en forme à la couche de présentation. –

0
ALTER PROCEDURE dbo.spGetImportDates 
AS 
BEGIN 
    SELECT CAST(CONVERT(DATE, i.ImportDate) AS NVARCHAR(10)) AS ImportDate 
    FROM dbo.Import i 
    ORDER BY i.ImportDate DESC 
END 

Vous pouvez obtenir seulement les 10 premiers caractères, puis le convertir en varchar

+0

Existe-t-il vraiment aucune option pour modifier le format de sortie des valeurs dans SQL Server Report Builder? Quand je le fais comme ça, je dois le reconvertir en type 'DATE' dans ma procédure' spGetData'. –