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

iReport Discussion :

Connexion d'un sous-rapports


Sujet :

iReport

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Par défaut Connexion d'un sous-rapports
    Bonjour,

    j'ai un problème urgent à régler. J'utilise JasperServer et iReport pour la conception de rapports.

    J'ai un rapport maitre qui utilise une connexion CNX1 (Source de données JDBC : MySQL), définie dans JasperServer.
    Ce rapport maitre intègre désormais un sous-rapport, lequel devrait utiliser une connexion CNX2 (Source de données JDBC : SQL*Server), également définie dans JasperServer.

    Je n'arrive pas à indiquer à mon sous-rapport d'utiliser la connexion CNX2.
    Comment je peux m'en sortir ?

    D'avance merci pour votre aide.

  2. #2
    Membre émérite

    Inscrit en
    Janvier 2009
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 467
    Billets dans le blog
    2
    Par défaut
    Je suppose qu'en local dans iReport tout marche bien...


    J'ai toujours utilisé dans mes sous-rapport la même connexion que le rapport principal (donc je n'avais pas de problème).

    Vraisemblablement qu'il ajouter la deuxième connexion comme ressource du rapport pour qu'elle soit disponible quand le moteur de rendu va vouloir s'en servir.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Par défaut
    Même en local, je n'arrive pas à trouver comment dire à mon sous-rapport d'utiliser la connexion CNX2.

    Au secours !!!

  4. #4
    Membre émérite

    Inscrit en
    Janvier 2009
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 467
    Billets dans le blog
    2
    Par défaut
    En fait cela semble assez compliqué comme problème...

    Parce que les connexion (de type: java.sql.Connection) ou les sources de données (de type: net.sf.jasperreports.engine.JRDataSource), sont géré par le programme qui utilise la librairie JasperReport (soit iReport en local, ou JasperServer sur un serveur).

    Il existe même une syntaxe XML pour définir ces connexions ou sources de données (faire un export depuis iReport par exemple)


    Ce que tout le monde semble faire, c'est avoir la même connexions ou source de données que le rapport principale. Les instances sont alors accessible par les paramètres :
    • P{REPORT_CONNECTION}
    • P{REPORT_DATA_SOURCE}

    transmis par défaut au Rapport par iReport ou par JasperServer.

    Il suffit d'indiquer :
    • Pour la même connexion
      • Connection Type: Use a connection expression
      • Connection Expression: P{REPORT_CONNECTION}

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      <subreport>
              <reportElement x="0" y="5" width="555" height="30"/>
              <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
              <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "report2.jasper"]]></subreportExpression>
      </subreport>
    • Pour la même source de donnée
      • Connection Type: Use a datasource expression
      • Datasource Expression: P{REPORT_DATA_SOURCE}

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      <subreport>
              <reportElement x="0" y="5" width="555" height="30"/>
              <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
              <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "report2.jasper"]]></subreportExpression>
      </subreport>


    L'assistant dans iReport est assez simple à ce niveau là


    Si tu écrivais ton propre programme Java, tu pourrais générer ta connexion et la placer dans un paramètre pour que le sous rapport puisse l'utiliser...

    Je ne sais pas si il est possible de définir un paramètre de type connexion et de l'initialiser avec l'instance de la connexion défini ailleurs dans JasperServer... En tout cas, cela semble difficile avec iReport (on a pas dans la fenêtre prompt du paramètre un menu déroulant avec les connexions déjà définies dans iReport), et je n'ai pas de JasperServer pour faire un essais.


    Tu semble utiliser deux connexions SQL... N'y a t'il pas moyen d'avoir la même connexion (avec des requêtes différentes) ??

    .

  5. #5
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Par défaut
    Et non, il me faut bien 2 connexions. Une 1ère MySQL et une 2nde SQL*Server.

    Derrière j'ai JasperServer. D'après ce que j'ai pu trouver, il y aurait peut-être une solution avec un scriptlet, mais je n'arrive pas à me le créer.

    J'ai essayé de d'utiliser une connexion express lors de l'appel du sous-rapport :
    java.sql.DriverManager.getConnection("jdbc:jtds:sqlserver://monserveur/MaBase;user=usr;password=pwd")
    Mais çà ne fonctionne pas, erreur d'évaluation.

    Je suis preneur de toute idée !

  6. #6
    Membre émérite

    Inscrit en
    Janvier 2009
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 467
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par jtexier Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.DriverManager.getConnection("jdbc:jtds:sqlserver://monserveur/MaBase;user=usr;password=pwd")
    Mais çà ne fonctionne pas, erreur d'évaluation.
    Tu as mis le code indiqué dans Connection Expression ?

    Essaye avec la version avec les parametres :
    getConnection(String url, String user, String password)

    Tu obtiens quoi comme erreur ? une SQLException ?

    * * *
    Autre question :
    Si tu définis CNX2 dans iReport ou dans JasperServer et que tu essaye ton sous-rapport comme si il s'agissait d'un rapport autonome ca marche ?

  7. #7
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Par défaut
    Dans les propriétés du sous-rapport inclus dans le rapport principal :
    - "Use a connection express"
    - java.sql.DriverManager.getConnection("jdbc:jtds:sqlserver://monserveur/mabase", "usr", "pwd")

    J'obtiens l'erreur suivante sous JasperServer :
    com.jaspersoft.jasperserver.api.JSExceptionWrapper: Error evaluating expression : Source text : java.sql.DriverManager.getConnection("jdbc:jtds:sqlserver://monserveur/mabase", "usr", "pwd")

Discussions similaires

  1. [C#] Changement de connexion de sous-rapports
    Par Garrett dans le forum SDK
    Réponses: 2
    Dernier message: 25/01/2011, 15h17
  2. Connexion pour un sous rapport
    Par mattyou_le_fou dans le forum iReport
    Réponses: 2
    Dernier message: 12/01/2010, 11h39
  3. Connexion sous rapport
    Par franfr57 dans le forum iReport
    Réponses: 7
    Dernier message: 30/07/2009, 11h01
  4. Sous rapport connexion
    Par halima dans le forum Jasper
    Réponses: 1
    Dernier message: 30/10/2008, 08h49
  5. Tester connexion Internet active sous Windows
    Par Altau dans le forum Développement
    Réponses: 3
    Dernier message: 12/08/2002, 13h43

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