2010-06-14 3 views
1

J'ai créé une page html statique (appelée start.jsp) contenant un formulaire où l'utilisateur sélectionne 2 plages de dates et ce formulaire a des sélecteurs de date pour ces zones de texte. Lorsque l'utilisateur soumet le formulaire , il doit les amener au rapport BIRT que j'ai conçu. Il DEVRAIT transmettre les 2 paramètres dont mon rapport a besoin (date de début et date de fin).Comment transmettre une valeur de date au rapport BIRT via querystring

Voici le querystring qui est ajouté à l'URL BIRT-viewer/run__report = Business_Activity_Monitoring.rptdesign & FilterStartDate = 2000-01-01 & FilterEndDate = 2009-01-01

Je reçois invalide date error: org.eclipse.birt.report.exception.ViewerValidationException: Le paramètre "FilterStartDate" n'est pas valide. La valeur "06-08-2010" n'est pas valide avec le type "dateTime".

Comment se fait-il que si je supprime complètement la chaîne de requête, alors BIRT me demandera d'entrer la date de début et la date de fin (capture d'écran ci-jointe). Je saisis exactement les mêmes données que le formulaire essaie d'envoyer et ça marche !?

Ceci prouve que ma chaîne de date est correctement formatée mais qu'elle ne les acceptera pas si elle est envoyée au rapport BIRT via la chaîne de requête? ? On dirait qu'il a un problème avec le fait que c'est une chaîne en premier lieu.

J'ai correctement configuré ces paramètres de rapport dans mon rapport BIRT. J'ai également essayé de les changer en spécifiant la valeur "Format as" pour être un "custom" YYYY-MM-dd mais cela n'a pas fonctionné.

Est-il même possible d'envoyer des paramètres de date à un rapport birt via une chaîne querys? Im deviner la solution impliquera la conversion de ces chaînes en dates dans l'onglet "script" du rapport de birt. mais je ne sais pas comment accéder aux variables de la chaîne de requête à partir d'ici ou comment définir les variables de paramètre du rapport .

Merci -Tommy

Répondre

2

Votre paramètre de rapport a probablement un type de données de "DateTime". En tant que tel votre passage de juste la date n'est pas suffisant. Lorsque vous utilisez les pages de demande de paramètre OOTB, cela est pris en compte sous les couvertures. Modifiez le type de données de votre paramètre sur "Date" ou ajoutez une signature temporelle à votre paramètre fourni au rapport via votre page (par exemple, 2009-01-01 00:00:00). Les deux approches devraient faire l'affaire.

Bonne chance!

+0

Merci MystikSpiral - Depuis mon poste, j'ai résolu le problème moi-même et le correctif était lié à ce que vous avez mentionné. Mon paramètre de rapport était de type "date time" et je l'ai changé en chaîne. Cela a résolu le problème. La requête SQL dans mon ensemble de données était correcte avec l'acceptation d'une chaîne comme paramètre - tant qu'elle était formatée au format de date de MySQL. – Tommy

0

Si le paramètre de date de début que vous transmettez est le 2000-01-01, pourquoi vous donne-t-il un message d'erreur indiquant que 06-08-2010 n'est pas valide? Il semble que le paramètre date soit défini ailleurs dans le rapport, soit en tant que valeur par défaut, soit éventuellement dans un script d'événement.

+0

Merci Mark, j'ai utilisé un mélange de différents exemples de l'erreur dans mon message. Désolé pour la confusion – Tommy

+0

Oh, je vois - merci. –

0

Vérifiez votre format de date; rappelez-vous que MM est utilisé pour mois et mm pour minutes.

Vérifiez également cette solution, trouvée au Eclipse Community Forums:

Try this in the URL:

&mydate=22/11/2009&__islocale=mydate

Replace mydate with your parameter name. The __isLocale parameter specifies that the parameter has been localized.

2

Ce qui suit est le format BIRT semble utiliser pour la validation des paramètres:

DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS" 

Donc, si vous passez la date/heure comme il devrait fonctionner

&mydate=2009-11-22 00:00:00.0 
Questions connexes