begin process at 2012 05 27 05:59:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Exécution

 > AUTOMATISATION EXÉCUTION CRYSTAL REPORT AVEC PASSAGE DE PARAMÈTRES

AUTOMATISATION EXÉCUTION CRYSTAL REPORT AVEC PASSAGE DE PARAMÈTRES


 Information sur la source

Note :
8,75 / 10 - par 4 personnes
8,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Exécution Source .NET ( DotNet ) Niveau :Débutant Date de création :07/05/2004 Vu :38 455

Auteur : berocca

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Ce programme permet d'exécuter des Crystal Reports en passant comme paramètres :

1. le nom du rapport
2. le type de sortie (1 = impression / 2 = sauvegarde sur le disque)
3. le nom de l'imprimante ou le répertoire de sauvegarde (selon l'option choisie au point 2)
4. une date de début (format jj/MM/aaaa)
5. une date de fin (format jj/MM/aaaa)

************************************* *

Explications détaillées :

J'utilise dans mon code la méthode Environment.GetCommandLineArgs qui permet de passer les paramètres à mon application sur la ligne de commande (Menu Démarrer - Exécuter).

Exemple d'appel à taper sur la ligne de commande :
"C:\Program Files\CR\CR.exe" rapportMensuel 2 C:\Mensuel\ 07/04/2004 07/05/2004

J'ai donc ajouté à ma solution un projet de déploiement, afin de pouvoir installer l'exécutable sur mon disque, de pouvoir faire les appels via la ligne de commande, et passer des paramètres.

**********************************

P our appeler ce programme dans un autre programme, il suffit d'employer un shell.

Exemple :
Dim cmd As String = """C:\Program Files\CR\CR.exe""" & " rptXXX 1 hp0001 " & dateDebut & " " & dateFin

Shell(cmd, AppWinStyle.NormalFocus, True)

Source

  • Imports CRAXDRT
  • Imports CrystalDecisions.Shared
  • Const DIR_RPT As String = "C:\rpt\" 'répertoire où sont stockés les .rpt à exécuter
  • Const SERVER As String = "Nom serveur"
  • Const DB As String = "Nom BD"
  • Const USER As String = "Nom utilisateur"
  • Const PWD As String = "Mot de passe"
  • Private Sub frmCR_Load()
  • Me.Hide()
  • Call executeCrystal()
  • Me.Close()
  • End Sub
  • Private Sub executeCrystal()
  • Dim crApplication As CRAXDRT.Application
  • Dim crReport As CRAXDRT.Report
  • Dim crTables As CRAXDRT.DatabaseTables
  • Dim crTable As CRAXDRT.DatabaseTable
  • Dim crParameterFieldDefs As CRAXDRT.ParameterFieldDefinitions
  • Dim crParameterFieldDef As CRAXDRT.ParameterFieldDefinition
  • Dim crConnectionInfo As New ConnectionInfo
  • Dim crTableLogonInfos As New TableLogOnInfos
  • Dim crTableLogonInfo As New TableLogOnInfo
  • Dim cpt As Integer
  • Dim i As Integer
  • Dim nbreParam As Integer
  • Dim orientationPapier
  • Dim nomDLL
  • Dim nomServeur
  • Dim nomBD
  • Dim userName
  • Dim password
  • Dim paramNomReport As String
  • Dim paramTypeSortie As Integer
  • Dim paramSortie As String
  • Dim paramDate As Date
  • Dim paramDate1 As String
  • Dim paramDate2 As String
  • Try
  • For cpt = 0 To UBound(Environment.GetCommandLineArgs)
  • Select Case cpt
  • Case 1
  • 'Nom du Crystal Report (sans l'extension .rpt)
  • paramNomReport = Environment.GetCommandLineArgs(1)
  • Case 2
  • '1 = impression
  • '2 = sauvegarde sur le disque
  • paramTypeSortie = Environment.GetCommandLineArgs(2)
  • Case 3
  • 'Selon paramTypeSortie :
  • ' 1 = nom de l'imprimante
  • ' 2 = Chemin du répertoire de sauvegarde (avec "\" à la fin)
  • paramSortie = Environment.GetCommandLineArgs(3)
  • Case 4
  • 'Date de Début (format jj/MM/aaaa)
  • paramDate1 = Environment.GetCommandLineArgs(4)
  • Case 5
  • 'Date de Fin (format jj/MM/aaaa)
  • paramDate2 = Environment.GetCommandLineArgs(5)
  • End Select
  • Next
  • If paramDate1 <> "" Then
  • paramDate = CDate(paramDate1)
  • End If
  • With crConnectionInfo
  • .ServerName = SERVER
  • .DatabaseName = DB
  • .UserID = USER
  • .Password = PWD
  • End With
  • nomDLL = "Dll de la DB"
  • nomServeur = crConnectionInfo.ServerName
  • nomBD = crConnectionInfo.DatabaseName
  • userName = crConnectionInfo.UserID
  • password = crConnectionInfo.Password
  • crApplication = CreateObject("CrystalRuntime.Application")
  • crReport = crApplication.OpenReport(DIR_RPT & paramNomReport & ".rpt", OpenReportMethod.OpenReportByTempCopy)
  • crParameterFieldDefs = crReport.ParameterFields
  • '************* TABLES *************
  • crTables = crReport.Database.Tables
  • For Each crTable In crReport.Database.Tables
  • crTable.SetLogOnInfo(nomServeur, nomBD, USER, PWD)
  • Next crTable
  • '************* PARAMETRES *************
  • crReport.EnableParameterPrompting = False
  • nbreParam = crParameterFieldDefs.Count
  • For i = 1 To nbreParam
  • crParameterFieldDef = crParameterFieldDefs.Item(i)
  • If crParameterFieldDef.ReportName = "" Then
  • crParameterFieldDef.SetCurrentValue(paramDate)
  • If paramDate2 <> "" Then
  • paramDate = CDate(paramDate2)
  • End If
  • End If
  • Next i
  • '************* CONNECTION BD *************
  • crApplication.LogOnServer(nomDLL, nomServeur, nomBD, USER, PWD)
  • If paramTypeSortie = 1 Then
  • '************* IMPRESSION *************
  • orientationPapier = crReport.PaperOrientation
  • With crReport
  • .SelectPrinter("", paramSortie, "")
  • .PaperOrientation = orientationPapier
  • .PaperSource = crReport.PaperSource.crPRBinMiddle
  • .PrintOut(False, 1)
  • End With
  • Else
  • If paramTypeSortie = 2 Then
  • '************* EXPORTATION *************
  • With crReport
  • .ExportOptions.FormatType = CRExportFormatType.crEFTCrystalReport
  • .ExportOptions.DestinationType = CRExportDestinationType.crEDTDiskFile
  • .ExportOptions.DiskFileName = paramSortie & paramNomReport & ".rpt"
  • .Export(False)
  • End With
  • End If
  • End If
  • Catch ex As Exception
  • MsgBox("ERREUR :" & ex.Message, MsgBoxStyle.Information, "Exécution du rapport " & paramNomReport)
  • End Try
  • End Sub
Imports CRAXDRT
Imports CrystalDecisions.Shared

Const DIR_RPT As String = "C:\rpt\"   'répertoire où sont stockés les .rpt à exécuter
Const SERVER As String = "Nom serveur"
Const DB As String = "Nom BD"
Const USER As String = "Nom utilisateur"
Const PWD As String = "Mot de passe"

Private Sub frmCR_Load()
        Me.Hide()
        Call executeCrystal()
        Me.Close()
End Sub

Private Sub executeCrystal()
        Dim crApplication As CRAXDRT.Application
        Dim crReport As CRAXDRT.Report
        Dim crTables As CRAXDRT.DatabaseTables
        Dim crTable As CRAXDRT.DatabaseTable
        Dim crParameterFieldDefs As CRAXDRT.ParameterFieldDefinitions
        Dim crParameterFieldDef As CRAXDRT.ParameterFieldDefinition

        Dim crConnectionInfo As New ConnectionInfo
        Dim crTableLogonInfos As New TableLogOnInfos
        Dim crTableLogonInfo As New TableLogOnInfo

        Dim cpt As Integer
        Dim i As Integer
        Dim nbreParam As Integer

        Dim orientationPapier
        Dim nomDLL
        Dim nomServeur
        Dim nomBD
        Dim userName
        Dim password

        Dim paramNomReport As String
        Dim paramTypeSortie As Integer
        Dim paramSortie As String
        Dim paramDate As Date
        Dim paramDate1 As String
        Dim paramDate2 As String

        Try
            For cpt = 0 To UBound(Environment.GetCommandLineArgs)
                Select Case cpt
                    Case 1
                        'Nom du Crystal Report (sans l'extension .rpt)
                        paramNomReport = Environment.GetCommandLineArgs(1)
                    Case 2
                        '1 = impression
                        '2 = sauvegarde sur le disque
                        paramTypeSortie = Environment.GetCommandLineArgs(2)
                    Case 3
                        'Selon paramTypeSortie : 
                        ' 1 = nom de l'imprimante
                        ' 2 = Chemin du répertoire de sauvegarde (avec "\" à la fin)
                        paramSortie = Environment.GetCommandLineArgs(3)
                    Case 4
                        'Date de Début (format jj/MM/aaaa)
                        paramDate1 = Environment.GetCommandLineArgs(4)
                    Case 5
                        'Date de Fin (format jj/MM/aaaa)
                        paramDate2 = Environment.GetCommandLineArgs(5)
                End Select
            Next

            If paramDate1 <> "" Then
                paramDate = CDate(paramDate1)
            End If

            With crConnectionInfo
                .ServerName = SERVER
                .DatabaseName = DB
                .UserID = USER
                .Password = PWD
            End With

            nomDLL = "Dll de la DB"
            nomServeur = crConnectionInfo.ServerName
            nomBD = crConnectionInfo.DatabaseName
            userName = crConnectionInfo.UserID
            password = crConnectionInfo.Password

            crApplication = CreateObject("CrystalRuntime.Application")
            crReport = crApplication.OpenReport(DIR_RPT & paramNomReport & ".rpt", OpenReportMethod.OpenReportByTempCopy)
            crParameterFieldDefs = crReport.ParameterFields

            '************* TABLES *************
            crTables = crReport.Database.Tables

            For Each crTable In crReport.Database.Tables
                crTable.SetLogOnInfo(nomServeur, nomBD, USER, PWD)
            Next crTable

            '************* PARAMETRES *************
            crReport.EnableParameterPrompting = False
            nbreParam = crParameterFieldDefs.Count

            For i = 1 To nbreParam

                crParameterFieldDef = crParameterFieldDefs.Item(i)

                If crParameterFieldDef.ReportName = "" Then
                    crParameterFieldDef.SetCurrentValue(paramDate)
                    If paramDate2 <> "" Then
                        paramDate = CDate(paramDate2)
                    End If
                End If
            Next i

            '************* CONNECTION BD *************
            crApplication.LogOnServer(nomDLL, nomServeur, nomBD, USER, PWD)

            If paramTypeSortie = 1 Then
                '************* IMPRESSION *************
                orientationPapier = crReport.PaperOrientation

                With crReport
                    .SelectPrinter("", paramSortie, "")
                    .PaperOrientation = orientationPapier
                    .PaperSource = crReport.PaperSource.crPRBinMiddle
                    .PrintOut(False, 1)
                End With

            Else
                If paramTypeSortie = 2 Then
                    '************* EXPORTATION *************
                    With crReport
                        .ExportOptions.FormatType = CRExportFormatType.crEFTCrystalReport
                        .ExportOptions.DestinationType = CRExportDestinationType.crEDTDiskFile

                        .ExportOptions.DiskFileName = paramSortie & paramNomReport & ".rpt"
                        .Export(False)
                    End With
                End If
            End If

        Catch ex As Exception
            MsgBox("ERREUR :" & ex.Message, MsgBoxStyle.Information, "Exécution du rapport " & paramNomReport)
        End Try

End Sub

 Conclusion

REMARQUES IMPORTANTES :

Ce programme nécessite la dll CRAXDRT.dll, fournie avec Crystal. Il vous faut donc une licence et avoir Crystal installé sur votre poste pour pouvoir exécuter ce programme.

Ne pas oublier de modifier les constantes + le nom de la dll de votre BD dans le code.


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) RGB COULEURS
Source avec Zip Source avec une capture Source .NET (Dotnet) PROGRAMME TV : COLLECTE DES INFOS SUR SITE WEB (REQUETE WEB ...
Source .NET (Dotnet) LISTE DES FICHIERS D'UN RÉPERTOIRE AU FORMAT HTML

 Sources de la même categorie

Source avec Zip CALCULATRICE par TPB
Source avec Zip Source .NET (Dotnet) PIERRE PAPIER CISEAUX par Ultrabytes
Source avec Zip Source avec une capture UN PATCH EN VB (V3) par PhoenixBytes
Source avec Zip Source .NET (Dotnet) [VB.NET 2008] EXECUTION MULTITHREAD DE PLUSIEURS FONCTION À ... par ShadowTzu
Source avec Zip Source avec une capture MULTITHREADING ACTIVEX par Philippe734

Commentaires et avis

Commentaire de FAIZA1974 le 18/08/2006 18:46:56

merci pour votre code mais qu'est ce que vous voulez dire par 'le nom de la dll de votre BD dans le code'.

Commentaire de pihp le 31/01/2007 18:08:58

CRAXDRT.dll
tu cherches sur ta machine ce fichier, un fois trouver le chmein tu rajoutes la ref a ton projet...
Vla
A+

Commentaire de LE_DD le 20/06/2007 15:10:24

Bonjour.

Cet exemple est exactement ce qui me faut mais je ne comprends pas ce que vous voulez dire par nomDLL (ligne 81 et 115).
Je dois faire tourner des rapports Crystal Report sur plusieurs Oracle 10g.

Pouvez vous m'éclairer sur ce point ?
Merci.

Commentaire de madge95 le 08/08/2008 10:15:34

J'ai effectué les tâches suivantes pour pouvoir appeller en automatique de Crystal Report avec passage de paramètres d'entrée :
1) j'ai installé Crystal Report XI sur mon poste en local, j'ai copié la dll 'CRAXDRT' dans le répertoire ou j'ai l'exécutable "crw32.exe".
2) j'ai copié un modèle de document RPT "letcolrap_012" dans mon répertoire d:\tmp\ en local.
3) j'ai simplement exécuté la commande suivante via menu "démarrer - exécuter" sans code source avant ni après cette ligne de commande :
"D:\Program Files\Business Objects\Crystal Reports 11\crw32.exe" letcolrap_012 2 d:\tmp\
4) suite à l'exécution de cette commande, j'ai le message d'erreur suivant :
"impossible de trouver ce fichier. Vérifier que le chemin et le nom du fichier sont corrects".
Je ne comprends pas ce message d'erreur car le nom du modèle est correct et le répertoire est correct.
Le nom du répertoire correspond-t-il au répertoire de stockage du modèle RPT ou au répertoire de sauvegarde du fichier résultat ?
Merci d'avance pour vos réponses.

Commentaire de clzop le 26/10/2010 11:45:34

merci pour votre code mais je voudrais le télécharger mais je n'arrive pas à le faire!!

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales