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

SDK Discussion :

Changement de connexion de sous-rapports


Sujet :

SDK

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Par défaut Changement de connexion de sous-rapports
    Bonjour,

    Je voudrais utiliser mes rapports sur deux bases de données différentes, la première est celle de production et la seconde est l'historique (même structure que la première mais n'est pas limitée à 3 mois de données). Dans mon interface utilisateur, j'initialise l'utilisateur, le mot de passe, le nom du serveur et le nom de la db à chaque lancement de rapport selon le choix de la db.

    Par défaut, j'ai initialisé mes rapports sur la db de production lors de leur création. Mon souci vient du fait que les sous-rapports pointent toujours vers la db de production, même si je force les paramètres pour qu'ils pointent sur l'autre db. Est-ce que quelqu'un a déjà eu ce problème?

    Voici le code que j'utilise:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    ReportDocument _Report = new ReportDocument();
    _Report.Load("mon rapport.rpt");
    ConnectionInfo _ConnectionInfo = new ConnectionInfo();
    _ConnectionInfo.IntegratedSecurity = false;
    _ConnectionInfo.DatabaseName = "nom de la db";
    _ConnectionInfo.ServerName = "nom du serveur";
    _ConnectionInfo.UserID = "utilisateur";
    _ConnectionInfo.Password = "mot de passe";
    LogonReport(_Report, _ConnectionInfo);
    crystalReportViewer1.ReportSource = _Report;
    ...
    private void LogonReport(ReportDocument report, ConnectionInfo conInfo)
            {
                TableLogOnInfo logonInfo = new TableLogOnInfo();
     
                foreach (Table crtable in report.Database.Tables)
                {
                    logonInfo = crtable.LogOnInfo;
                    logonInfo.ConnectionInfo = conInfo;
                    crtable.ApplyLogOnInfo(logonInfo);
                }
     
                foreach (Section crSection in report.ReportDefinition.Sections)
                {
                    foreach (ReportObject reportObject in crSection.ReportObjects)
                    {
                        if (reportObject.Kind == ReportObjectKind.SubreportObject)
                        {
                            SubreportObject subreportObject = (SubreportObject)reportObject;                    
                            LogonReport(report.OpenSubreport(subreportObject.SubreportName), conInfo);
    //-- via mes recherches par Google, j'ai lu que certaines personnes ouvre le sous-rapport à partir du sous-rapport à la place du rapport. 
    //-- Pas très logique et cela ne marche pas non plus.    
                        }
                    }
                }
            }
    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Par défaut
    Il y a différentes solutions sur le site de SAP ou ici, mais aucune ne fonctionne... J'en ai même trouvée une sur leur site qui passe un ConnectionInfo en paramètre à une procédure sans jamais l'appliquer au rapport et à ses sous-rapports

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Par défaut
    Après tests, je constate que cela fonctionne avec les sous-rapports directement créés dans le rapport mais pas avec ceux qui ont été importés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    IConnectionInfo connectInfo = _Report.DataSourceConnections[0];
    connectInfo.SetConnection("serverName", "db", "uid", "pwd");
     
    foreach (ReportDocument boSubreport in _Report.Subreports)
    {
       IConnectionInfo subconnectInfo = boSubreport.DataSourceConnections[0];
       subconnectInfo.SetConnection("serverName", "db", "uid", "pwd");
    }

Discussions similaires

  1. [CR XI] Changement d'un sous-rapport et changement des rapports l'appelant
    Par juju05 dans le forum Débuter
    Réponses: 5
    Dernier message: 19/02/2015, 17h01
  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 d'un sous-rapports
    Par jtexier dans le forum iReport
    Réponses: 6
    Dernier message: 08/12/2009, 17h58
  4. Connexion sous rapport
    Par franfr57 dans le forum iReport
    Réponses: 7
    Dernier message: 30/07/2009, 11h01
  5. Sous rapport connexion
    Par halima dans le forum Jasper
    Réponses: 1
    Dernier message: 30/10/2008, 08h49

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