Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Crystal Reports
Crystal Reports Forum d'entraide sur Crystal Reports. Avant de poster --> FAQ Crystal, Tutoriels Crystal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/04/2005, 09h01   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 24
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 24
Points : 14
Points : 14
Par défaut [CR][ASP.Net]Connection base de données / web.config

Bonjour,
J'ai un petit soucis au niveau de la connection d'un etat.
Pour l'instant, je fais une connection direct à une base de données pour accéder à une table, méthode qui marche trés bien sauf au moment où, on change de serveur (donc changement de nom, donc changement de la chaîne de connection, donc marche plus...)

J'aimerais donc pouvoir faire une connection direct à une base de données (SQL Server), en utilisant une chaîne de connection qui se trouve dans le fichier web.config du site. Et c'est là que je bloque :/

Si qq'un sait comment faire... D'avance merci
Dozer71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2005, 09h20   #2
Membre régulier
 
Inscription : novembre 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 100
Points : 73
Points : 73
Il faut passer par progammation ta nouvelle connexion au rappport en manipulant un obejt ReportDocument.
Un exemple en VB.NET (tester pour une connexion Oracle):

Code :
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
 
            Public Shared Sub ConnectReport(ByVal crd AS ReportDocument)
            ' /!\ fonction recursive
            Dim li As TableLogOnInfo
            Dim ci As ConnectionInfo
            Dim subReport As ReportDocument
            Dim rptObject As ReportObject
            Dim subRptObject As SubreportObject
            Dim tbl As Table
 
            ci = New ConnectionInfo
            ci.ServerName = ConfigurationSettings.AppSettings("DbSource")
            ci.DatabaseName = ""
            ci.UserID = ConfigurationSettings.AppSettings("DbUser")
            ci.Password = Decrypte(ConfigurationSettings.AppSettings("DbPassword"))
 
 
            For Each tbl In crd.Database.Tables
                li = tbl.LogOnInfo
                li.ConnectionInfo = ci
                tbl.ApplyLogOnInfo(li)
            Next
 
            For Each rptObject In crd.ReportDefinition.ReportObjects
                If rptObject.Kind = ReportObjectKind.SubreportObject Then
                    subRptObject = CType(rptObject, SubreportObject)
                    subReport = crd.OpenSubreport(subRptObject.SubreportName)
                    ConnectReport(subReport)
                End If
            Next
ci.DatabaseName est à renseigné pour une connexion SQL server.
the_bmo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2005, 14h28   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 24
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 24
Points : 14
Points : 14
Merci beaucoup

Juste un autre petit problème, vraiment bisard
Voici mon code, pour mettre à jour les connexions :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	foreach(CrystalDecisions.CrystalReports.Engine.TABLE tbl IN subReport.DATABASE.TABLES)
	{
		// Extraire l'objet TableLogonInfo.
		newTabLogOnInfo = tbl.LogOnInfo;
 
		// Définir le serveur ou le nom de la source de données ODBC, le nom de la base de données,
		// l'ID utilisateur et le mot de passe.
		newTabLogOnInfo.ConnectionInfo.ServerName = server;
		newTabLogOnInfo.ConnectionInfo.DatabaseName = DATABASE;
		newTabLogOnInfo.ConnectionInfo.UserID = userID;
		newTabLogOnInfo.ConnectionInfo.Password = password;
 
		// Appliquer les informations de connexion à la TABLE.
		tbl.ApplyLogOnInfo(newTabLogOnInfo);
 
		// Test de la connectivité de la TABLE
		connexionOK &= tbl.TestConnectivity();
	}
Ca marche bien sauf pour le mot de passe où il ne le mets pas à jour dans la "DataBases.Table". J'ai beau testé dans tous les sens (cast/pas cast, chaîne en dur/variable, bug/debug ...), il ne le jamais à jour
Pourtant tous les autres champs sont mis à jour... bizaaard...
Dozer71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2005, 09h53   #4
Membre régulier
 
Inscription : novembre 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 100
Points : 73
Points : 73
Bizarre, ça fonctionne ou pas?
the_bmo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2005, 16h05   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 24
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 24
Points : 14
Points : 14
Ben ça marche presque

Ca me mets le nom du server à jour ainsi que le dataBasename et le userId. Par contre, le mot de passe il me le mets pas à jour (alors qu'il le récupère bien dans le web.config). Donc forcement, avec un mot de passe qui est pas adapté, ça plantouille au niveau de la connection.

7h que je suis sur ce problème ça commence un poil à m'énerver
Dozer71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2005, 14h40   #6
Membre régulier
 
Inscription : novembre 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 100
Points : 73
Points : 73
Tu n'a pas instencié de ConnectionInfo, tu utilises celle déjà affectée c'est peut-être pour çà.
Essaye un truc du genre:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
 foreach(CrystalDecisions.CrystalReports.Engine.TABLE tbl IN subReport.DATABASE.TABLES)
   {
      // Extraire l'objet TableLogonInfo.
      newTabLogOnInfo = tbl.LogOnInfo;
 
      // Définir le serveur ou le nom de la source de données ODBC, le nom de la base de données,
      // l'ID utilisateur et le mot de passe.
      ConnectionInfo ci = new ConnectionInfo();
 
      ci.ConnectionInfo.ServerName = server;
      ci.ConnectionInfo.DatabaseName = DATABASE;
      ci.ConnectionInfo.UserID = userID;
      ci.ConnectionInfo.Password = password;
 
      newTabLogOnInfo.ConnectionInfo  = ci;
 
      // Appliquer les informations de connexion à la TABLE.
      tbl.ApplyLogOnInfo(newTabLogOnInfo);
 
      // Test de la connectivité de la TABLE
      connexionOK &= tbl.TestConnectivity();
   }
the_bmo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2005, 12h48   #7
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 24
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 24
Points : 14
Points : 14
:'( Nan, après test, ça ne change rien !
Dozer71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2005, 08h41   #8
Membre régulier
 
Inscription : novembre 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 100
Points : 73
Points : 73
je seche completement là!
the_bmo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h59.


 
 
 
 
Partenaires

Hébergement Web