Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Crystal Reports > SDK
SDK Forum sur l'utilisation de Crystal Reports par des API (VB, C++, Delphi, Java, etc.)
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 25/07/2006, 11h08   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 79
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 79
Points : 43
Points : 43
Par défaut [CR 9] [VB.NET] Réalisation d'un viewer, mise en réseau

Bonjour à tous, je suis actuellement en train de réaliser un viewer et j'aurais besoin d'un petit coup de pouce.
Je vous fait profiter du code :


Citation:
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine

Public Class Viewer
Inherits System.Windows.Forms.Form
Private Sub menu_quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menu_quitter.Click
'Quitter le programme
Close()
End Sub

Private Sub Viewer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim oRpt As New ReportDocument
Dim oSubRpt As New ReportDocument
Dim strFile As String
Dim commands As String = Microsoft.VisualBasic.Command()
Dim crSections As Sections
Dim crSection As Section
Dim crReportObjects As ReportObjects
Dim crReportObject As ReportObject
Dim crSubreportObject As SubreportObject
Dim crDatabase As Database
Dim crTables As Tables
Dim crTable As Table
Dim crLogOnInfo As TableLogOnInfo
Dim crConnInfo As New ConnectionInfo
'On recupere le chemin du fichier qui a demandé l'ouverture du programme
strFile = commands
'On enleve les quotes du chemin
strFile = strFile.Trim(Chr(34))
'On associe le fichier ciblé au type ReportDocument
oRpt.Load(strFile)

'Connection à SQL server
'Le code du rapport commence ici
'Attribue la base de données et les tables objets au rapport principal 'oRpt'
crDatabase = oRpt.Database
crTables = crDatabase.Tables

For Each crTable In crTables
With crConnInfo
.ServerName = "nom_du_serveur"
.DatabaseName = "nom_de_la_base"
.UserID = "SA"
.Password = ""
End With
crLogOnInfo = crTable.LogOnInfo
crLogOnInfo.ConnectionInfo = crConnInfo
crTable.ApplyLogOnInfo(crLogOnInfo)
Next
'Attribue les collections de sections avec les sections du rapport
crSections = oRpt.ReportDefinition.Sections
'Boucle dans chaque section et trouve tous les objets du rapport
'Boucle tous les objets du rapport pour trouver les sous rapports
'et leur attribuer les informations de connexion
For Each crSection In crSections
crReportObjects = crSection.ReportObjects
For Each crReportObject In crReportObjects
If crReportObject.Kind = ReportObjectKind.SubreportObject Then
'Si on trouve un sous rapport, on défini l'objet en
'tant que sous rapport
crSubreportObject = CType(crReportObject, SubreportObject)
'Ouverture du sous rapport
oSubRpt = crSubreportObject.OpenSubreport(crSubreportObject.SubreportName)
crDatabase = oSubRpt.Database
crTables = crDatabase.Tables 'Boucle dans chaque table et attribution des informations de connexion
'On passe les informations de connection dans l'objet 'logoninfo'
'et on applique ces informations au sous rapport
For Each crTable In crTables
With crConnInfo
.ServerName = "nom_du_serveur"
.UserID = "nom_utilisateur"
.Password = "mot_de_passe"
End With
crLogOnInfo = crTable.LogOnInfo
crLogOnInfo.ConnectionInfo = crConnInfo
crTable.ApplyLogOnInfo(crLogOnInfo)
Next
End If
Next
Next
'On initialise le composant crystal reports au fichier ciblé
CRView.ReportSource = oRpt
'On masque par défaut la visualisation des groupes
CRView.DisplayGroupTree = False
'On zoom par défaut à 100%
CRView.Zoom(7)
End Sub


Private Sub Viewer_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
'On adapte la taille du Viewer à la taille du contenu lors du redimensionnement
CRView.Height = ClientSize.Height
CRView.Width = ClientSize.Width
End Sub
End Class

Dans mon formulaire je dispose juste d'un composant CrystalReportViewer1 renomé CRView pour l'occasion et d'un menu avec une option quitter (whaa).

Pour ouvrir un rapport avec ce programme il suffit de glisser deposer le rapport dessus ou de passer par 'ouvrir avec'.

Tout marche très bien en local, il me permet d'ouvrir des rapports avec les données sauvegardées ou de gérer la connexion avec la base.

Cependant le problème survient à partir du moment ou je le met en réseau.

Citation:
System.Security.SecurityException: Erreur de sécurité.
1) Comment puis-je m'y prendre pour lever cette exception ?
2) Si je lance mon .exe en réseau ais-je besoin d'installer les composants de crystal sur le serveur ou les avoir en local suffit-il ?
3) Question subsidiaire : comment récupérer les paramètres de connexion directement à partir du rapport, pour les attribuer directement dans le code ?

Merci de votre aide
Maltus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 17h23   #2
Membre du Club
 
Inscription : juillet 2006
Messages : 79
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 79
Points : 43
Points : 43
Bon c'est une simple histoire de permissions au niveau du .net framework à priori en ce qui concerne l'accès réseau.

Sinon j'ai trouvé quelques beaux problèmes dans mon code, il faut faire un test sur l'existence des paramètres en tout debut sinon meme avec des données sauvegardées il va tenter de faire le lien avec la base (ce que je voyais pas lors de l'execution comme tous mes rapports étaient construits à partir de la même base SQL).

Voilà, je testerais moi même sur un poste local pour voir si les merges modules de CR9 me permettent bien d'utiliser l'appli.

Résolu
Maltus 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 11h50.


 
 
 
 
Partenaires

Hébergement Web