IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

BIRT Discussion :

[2.2.2] Test existence de paramètres


Sujet :

BIRT

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Par défaut [2.2.2] Test existence de paramètres
    Bonjour à tous,

    Je souhaite créer des requêtes SQL dynamiques au sein de bibliothèques. Pour cela, je souhaite construire mes requêtes en utilisant l'événement beforeOpen() de chaque dataset. (cf. Comment créer des rapports dont le comportement est dicté par les paramètres ?).

    Mes requêtes peuvent être utilisées dans différents rapports. Ces rapports ont chacun des paramètres différents.

    Je voudrais donc pouvoir écrire des requêtes du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    queryText = "SELECT [...] \n" +
    			"FROM TABLE1 t1, TABLE2 t2 \n ";
     
    if(params["PAR1"].value != null) { 
    	queryText = queryText + ", TABLE3 \n ";
    }	
     
    queryText = queryText + 
    			"WHERE ANNEE  = ?  \n" + 
    			"  AND [JOINTURE TABLE1/TABLE2] \n";
     
    if(params["PAR2"].value != null) {
    	queryText = queryText + "  AND [FIELDNAME] = " + params["PAR2"].value + " \n" ;
    }
    else {
    	queryText = queryText + "  AND [FIELDNAME] = 13 \n" ;
    }
     
    if(params["PAR3"].value != null) {
    	queryText = queryText + "  AND [FIELDNAME]  = '" + params["PAR3"].value + "' \n";
    }
     
    if(params["PAR1"].value != null) { 
    	queryText = queryText + " AND [JOINTURE TABLE3/TABLE1] \n";
    }
    Mais cela ne fonctionne pas car tous les paramètres ne sont pas utilisés au sein des rapports. Du coup, BIRT lève une exception dès que le paramètre n'est pas déclaré.

    Par exemple, dans un rapport ayant un seul paramètre nommé "PAR3", si je fais ceci dans un dynamique text ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(params["PAR44"] != null && params["PAR44"].value != null) { "ok"; }
    else { "pas ok"; }
    ... BIRT me lève une exception

    Savez-vous comment tester si un paramètre existe ou non dans un rapport ?

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Par défaut
    la variable "params" est une instance de la classe org.eclipse.birt.report.engine.executor.ScriptableParameters

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Par défaut
    Je pense que BIRT doit utiliser cette méthode : (source ScriptableParameters)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public Object get( String name, Scriptable start )
    	{
    		Object result = getScriptableParameter( name );
    		if ( result == null )
    		{
    			throw new JavaScriptException( "not exits paramters:" + name,
    					"<unknown>", -1 );
    		}
    		return result;
    	}
    Par conséquent, dès que le paramètre n'est pas défini BIRT lève une exception ! Aïe !!!!!!

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 385
    Par défaut
    J'ai trouvé en fouillant un peu sur le Net une solution à mon problème. Voici une fonction javascript que j'ai crée pour me faciliter la tâche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function paramExists(paramName) {
        return (reportContext.getParameterValue(paramName) != null && params[paramName].value != null);
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/09/2011, 11h12
  2. [WM_XBUTTONUP]Test sur le paramètre wParam
    Par black is beautiful dans le forum Windows
    Réponses: 5
    Dernier message: 02/04/2006, 16h16
  3. test existance d'un schema
    Par romdelf dans le forum Oracle
    Réponses: 2
    Dernier message: 13/03/2006, 12h46
  4. debutante - test existence fichier
    Par coco21 dans le forum Débuter
    Réponses: 9
    Dernier message: 12/02/2006, 12h07
  5. [C++ .NET] Test existence d'un fichier
    Par remixxl dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 26/07/2004, 19h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo