Pb crystal report version 10 et VB6

Didier -  
schlebe Messages postés 2 Statut Membre -
Voila je debute sous visual basic 6.0 j'ai fait une peit appli et j'ai bessoin de visualiser des fichier creer avec Crystal Report 10 dans les composant j'ai bien un control ActiveX (CrystalActiveXReportViewer1)

mais comment utiliser ce controle genre :
CrystalActiveXReportViewer1 pour qu'il me charge et affiche mon fichier .RPT

Merci de votre aide

14 réponses

  1. Balin
     
    Easy :)

    1° Tu ajoutes dans tes références :
    -Crystal ActiveX Reports Viewer Library 10.0
    -Crystal Reports ActiveX Designer Run time Library 10.0

    2° tu créer une form et tu y ajoute le controle CrystalActiveXReportViewer (nomme ce controle CRVReport)

    3° Tu tappes le code suivant sur le On Load de ta form :

    Private Sub Form_Load()

    Dim rptReport As New CRAXDRT.Report
    Dim rptRepApp As New CRAXDRT.Application
    Dim rtpViews As CRAXDRT.DatabaseTable

    ReportFileName = "c:\Monchemin\monfichier.rpt"
    Set rptRepApp = New CRAXDRT.Application
    Set rptReport = New CRAXDRT.Report

    With CRVReport

    Set rptReport = rptRepApp.OpenReport(ReportFileName, 1)

    .ReportSource = rptReport
    .ViewReport

    End With

    End Sub
    3
    1. Mary
       
      Salut!
      :) je suis vraiment tres contente d'avoir trouvé ton code (help ; cryst10+vb) ça m'a sauvé!! :) Merci encor!!!!

      Bon, je me permets de te demander une autre choz, a propos du meme sujet(cryst10+vb6)
      Bon voila, chui bloquée dans mon application de fin d'études!
      bref, j'ai créé une facture sous CR10, les acheteurs (clients) sont sous forme de subreport!
      le prob est : je veux que les fields(CIN, nom, prénom...) soient inclus dans une seule zone de texte, sous forme :
      Mr Nom Prénom, titulaire de la carte d'identité nationale N° CIN
      voila, les fields dans une phrase!
      Ce que je voudrai l'éviter, ce sont les espaces, parceque par exp : la longueur maximale d'un champ nom est 25 caaracteres, sinon y aura des nom qui ne dépasse meme pas 10 caracteres!!
      voici mon prob en expl:
      mauvais exp:
      Mr, Alin Billy , titulaire de la carte d'identité nationale N° XXXXXX.
      Exp parfai:
      Mr, Alin Billy, titulaire de la carte d'identité nationale N° XXXXXX.
      C'est tout, ouf, je crois que je vous embête!! Sorry!
      Merci d'avance!!
      0
    2. hajer
       
      salut
      je suis tres content de trouver votre solution apropos de crystal report 10 avec vb .
      ci vous me permetter de vous demander de l'aide a mon probleme
      qui consiste a attribuer une source comme requete paramétré a mon etat que je n ai pas su faire ca.
      merci de votre aide
      je n ai trop besoin
      0
  2. Balin
     
    Salut :)

    Content d'avoir pu te 'sauver la vie' :)

    J'espere que je réponds pas trop tard mais bon ;)

    Pour ton second problème,
    Il me semble que c'est un problème purement Crystal report non ?

    Si j'ai bien tout saisi à ton problème, tu as un sous état dans ton état mère dans lequel tu voudrais afficher tes info client, c'est bien ça ? Avec, comme tu le spécifies, toutes tes infos clients dans le meme champ.

    Je ne saisi pas bien pourquoi tu veux tout mettre dans un même champs et surtout pourquoi tu utilise un sous état ? A mon avis tu dois avoir un probleme au niveau de ta sélection de donnée sur ton état.

    Ou sont stockées tes données ? Quel sont les paramètres de selection que tu utilises dans CR ?

    Voila à+
    0
    1. MARY_DESIGN Messages postés 1 Statut Membre
       
      Salut, Merci bcp!
      J'ai tou réglé!!!!
      Au fait, j'ai créé une requete sous access avec un champ contenant toute les informations...... meme ALIAS.
      j'ai utilisé cette methode:
      Mr, X, titulaire de la CIN N°: XX
      [Civilité] & ', ' & [NOM] & ', titulaire de la CIN N°: ' & [CIN]
      Voila!! ( [X] = un champ)
      :) Merci again! et a+!!
      Mainant, je metriz bien le CR10, tinkiét ;) !!! :) I'm so happy!
      Bisou!!
      0
  3. sahli
     
    bonjour,
    j'utilise VB6 et crystal reports 10 et je veux lier un etat à un controle data comme en vb5. En fait je veux afficher le résultat d'une requete dans un état et j'arrive pas à le faire en VB6.

    pourriez vous m'aider svp, c'est très urgent.
    0
  4. Balin
     
    Yop ;)

    Desole je reponds super tard a chaque fois mais je ne matte pas souvent mes mails ;)

    Ton probleme est assez classique ^^

    Il te suffit de créer un état crystal report. (jusque la tout va bien.)
    Tout va se jouer lors de la connection à la base de donnée. (Car base de donnée tu dois avoir vu que tu fais une requete)

    Donc tu créé ton nouveau Doc crystal report avec l'assistant la il te demande la source de tes données :
    * Si tu as une base Access donc tu fais Créer une nouvelle connexion/AccessExcel(DAO).
    * Si tu as une Bdd SQL server ou oracle ou autre tu prend Créer une nouvelle connexion/OLE DB(ADO) puis tu selectionne le driver correspondant a ta Base de donnée.

    Une fois ceci Fais l'assistant te demande les table que tu veux intégrer à ton état CR et ..... il ne faut pas ajouter ces table mais créer une nouvelle commande ! une fenetre s'ouvre et la tu tappe ta requete SQL.

    Et enfin comme par magie tu pourra te servir du resultat de ta requete pour creer ton etat CR.

    Ensuite pour intégrer l'état CR à VB6 utilise le code ci dessus.

    Voila j'espere que ca va t'aider ^^

    @+ et bonne prog ^^
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Garf
     
    Bonjour

    petit prob votre exemple de code marche tres bien pour recuperer les rapports mais j'ai un petit prob car mon serveur requiere une authentification par non "du serveur","nom du user", mot de pass user et la base a laquelle se connecter avant d,afficher le rapport et ce n'est pas tres ptratique j'utilise vb6 avec crystal 10 si quelqu'un a une idee ???????

    je suis toutes oreilles ouverte

    merci
    0
    1. Night
       
      Bonjour,
      avec retard mais bon on sait jamais !

      Global Const Mon_Pass As string = "tintin"

      Dim m_Application As New CRAXDDRT.Application
      Dim m_Report As CRAXDDRT.Report
      Dim props As CRAXDDRT.ConnectionProperties

      Set m_Report = m_Application.OpenReport("toto.rpt", 1)
      Set props = m_Report.Database.Tables(1).ConnectionProperties
      props.Item("Database Name") = "chemin et non du mdb"
      props.Item("Database Password") = Mon_Pass

      Bon courage

      PS : si besoin ecrire à e-mail (ems_night@hotmail.com)
      0
  7. samir
     
    bonjour,
    j'utilise VB5 et crystal reports 4.5 et je veux calculer un total des valeures par page avec des sous totauxpour chaque page, et en résumer un total général

    pourriez vous m'aider svp, c'est très urgent.
    0
  8. cha3nouna
     
    ajouproblr de crystal report avec vb6
    0
  9. cha3nouna
     
    j ai un probleme au nieaux de code je voudrais creer un etat parametrer je programme avec vb6 , j ai une table qui sable Dossier je veux lors je tappe le numero dossier les information de ce denier s'affiche dans crystal data report
    les informatiom de dossier{nom dossier ,date creation}
    j au yne base de donnes au niveau d 'access
    vb6+crystal report 7
    help me
    voila mon msn :leila-morroco@hotmail.fr
    0
  10. bmki
     
    Je voudrais afficher avec VB6 un état de crystalreport réaliser à partir d'une base de données Access 2000. Cette Base de données contient un mot de passe.

    Qui pourriez me dire comment je pourrais appeller cet état à partir de VB6.

    Merci d'avance pour vos attentions et j'espère recevoire un aide à mon problème.
    0
  11. Lilou
     
    Bonjour,

    J'ai commencé depuis peu à coder en c++ builder6, et je débute avec crystal report11.
    Je souhaiterai savoir si c'est possible d'afficher une fenetre de choix avant d'afficher le rapport depuis mon application builder?
    c'est à dire quand j'appel mon rapport depuis mon appli, le crystal me permet d'ouvrir une fenetre et valider un choix pour afficher mes données....
    et encore une question, pourquoi les liens hypertexts ne marche pas sur le rapports?? est ce que c'est fait uniquement pour travailler avec sous crystal report????

    J'espère avoir une reponse.
    Merci d'avance.
    0
  12. ahlem
     
    Salut

    Pour moi, mon probléme c'est que je veux afficher un histogramme et un tableau au dessus dans rapport avec crystal report 10, est-ce que vous pouvez m'aider. Et Merci d'avance .
    0
  13. llolo
     
    salut!
    tout ce qui a été dit m'a vraiment aidé! je suis novice avec crystal donc ne peut pas apporter plus à ce qui a été dit!
    Moi j'aimerai bien pouvoir depuis mon code vb changer la valeur de la requête cas des requête paramétré ! j'ai fait pas mal de tentative mais je ne vois nulle part ou changer la requête qui affinera les résultats qui devront parêtre dans l'état! votre aide me sera fort utile svp!
    0
  14. schlebe Messages postés 2 Statut Membre
     
    Bonjour,

    je peux peut- être vous aider.

    Voici un code VB6, puis en dessous, un code Visual Basic .Net pour la génération de multiples factures au format PDF.

    Code VB6

    SQL = "SELECT NroFact,PaysFactur,PJ,MailFactur" _
        & "$ FROM FACTURE" _
        & "$ WHERE TypFact = 'MENS'" _
        & "$   AND PeriodeFact = '" & sPeriodeFact & "'" _
        & "$   AND " & sBicWhere _
        & "$   AND Ok = 0" _
        & "$ ORDER BY NroFact"
    
    Set rs = SqlExecute(SQL)
    
    Set crRepp = crApp.OpenReport(rptfile)
    crRepp.DisplayProgressDialog = False
        
    ' Fill report parameters
    Set crParamDefs = crRepp.ParameterFields
    
    'Passage des paramètres fixes du rapport
            
    For Each crParamDef In crParamDefs
        Select Case crParamDef.ParameterFieldName
        Case "TypeDocument":    crParamDef.SetCurrentValue sFactureTitre
        Case "Responsable":     crParamDef.SetCurrentValue sResponsable
        Case "Telephone":       crParamDef.SetCurrentValue sTelephone
        Case "email":           crParamDef.SetCurrentValue sEmail
        End Select
    Next
        
    crRepp.EnableParameterPrompting = False
    crRepp.Database.Tables(1).SetLogOnInfo "", "", sDbUser, sDbPassword
    crRepp.ExportOptions.DestinationType = crEDTDiskFile
    crRepp.ExportOptions.FormatType = crEFTPortableDocFormat
    crRepp.ExportOptions.PDFExportAllPages = True
    
    Do Until rs.EOF
        sNoDoc = rs("NroFact")
        sPaysFact = rs("PaysFactur")
        sMail = rs("MailFactur")
        
        If sNoDoc <> sPreviousNoDoc Then
            sPreviousNoDoc = sNoDoc
        End If
            
        SQL = "SELECT FACTURATION.*" _
            & "      ,FACTURE.ConditionPaie" _
            & "  FROM FACTURATION" _
            & "    LEFT JOIN FACTURE" _
            & "      ON FACTURATION.NroFact = FACTURE.NroFact" _
            & "  WHERE FACTURATION.NroFact = '" & sNoDoc & "'" _
            & "  ORDER BY ID"
    
        crRepp.SQLQueryString = SQL
        crRepp.ExportOptions.DiskFileName = sPathPJ & rs("PJ")
        crRepp.Export (False)
        
        rs.MoveNext
    Loop
    


    Code VisualBasic .Net

            crReport = New ReportDocument()
            crReport.Load(rptfile)
            crApp.ReportSource = crReport
    
            crApp.ShowRefreshButton = False
            crApp.ShowCloseButton = False
            crApp.ShowGroupTreeButton = False
    
            Dim crLogin As CrystalDecisions.Shared.TableLogOnInfo
    
            crLogin = crReport.Database.Tables(1).LogOnInfo
            'crLogin.ConnectionInfo.ServerName = sServerName
            'crLogin.ConnectionInfo.DatabaseName = "Antennes"
            crLogin.ConnectionInfo.UserID = sDbUser
            crLogin.ConnectionInfo.Password = sDbPassword
            crReport.Database.Tables(1).ApplyLogOnInfo(crLogin)
    
            ' Fill report parameters
            'Dim crParameters As ParameterFields = crApp.ParameterFieldInfo
            'Dim crParam As New ParameterValues()
    
            For Each crParamDef In crReport.DataDefinition.ParameterFields
                Select Case crParamDef.Name '.ParameterFieldName
                    Case "TypeDocument" : SetCurrentValue(sFactureTitre)
                    Case "Responsable" : SetCurrentValue(sResponsable)
                    Case "Telephone" : SetCurrentValue(sTelephone)
                    Case "email" : SetCurrentValue(sEmail)
                End Select
            Next crParamDef
    
            SQL = "SELECT NroFact,PaysFactur,PJ,MailFactur" _
                & "$ FROM FACTURE" _
                & "$ WHERE TypFact = 'MENS'" _
                & "$   AND PeriodeFact = '" & sPeriodeFact & "'" _
                & "$   AND " & sBicWhere _
                & "$   AND Ok = 0" _
                & "$ ORDER BY NroFact"
    
            rs = SqlExecute(SQL)
    
            Do Until rs.EOF
    
                sNoDoc = rs.Fields("NroFact").Value
                sPaysFact = rs.Fields("PaysFactur").Value
                sMail = rs.Fields("MailFactur").Value
    
                If sNoDoc <> sPreviousNoDoc Then
                    sPreviousNoDoc = sNoDoc
                End If
    
                sWhere = "{FACTURATION.NroFact} = '" & sNoDoc & "'"
    
                crReport.RecordSelectionFormula = sWhere
                'oDiskOpts.DiskFileName = sPathPJ & rs.Fields("PJ").Value
                'oExportOptions.ExportDestinationOptions = oDiskOpts
                'crReport.Refresh()
                'crReport.Export(oExportOptions)
    
                crReport.ExportToDisk(ExportFormatType.PortableDocFormat, sPathPJ & rs.Fields("PJ").Value)
    
                rs.MoveNext()
            Loop
    
            crReport.Close()
    
        End Sub
    


    Ceci est est exemple. Il n'est certainement pas parfait, mais il fonctionne !

    En VB6 pour 1200 clients il met 10 minutes. En Visual Basic .Net avec CrystalReport 10, il met 2 heures du fait que je n'ai plus pû utiliser la méthode SQLQueryString et que je dois donc ouvrir le rapport à chaque étape de ma boucle.

    Si quelqu'un à une idée pour générer rapidement les 1200 factures sans passer à une machine plus puissante, je suis intéressé.Cordialement
    -1
  15. schlebe Messages postés 2 Statut Membre
     
    J'ai travaillé toute la matinée pour trouver une solution et enfin j'en ai trouvé une.
    Elle fonctionne mais ce n'est peut être pas le meilleur.

    J'ai remplacé la méthode SQLQueryString que j'utilisais dans l'ancienne version de Crystal Report et qui n'est plus supportée par Crystal Report 11 par l'utilisation de SqlDataSet (ma base de données est SQL-Server).

    J'obtiens alors le code suivant

        '******************************************************************************
        '* GeneratePDF
        '******************************************************************************
    
        Private Sub GeneratePDF()
            Dim sNoAntenne As String
            Dim sPreviousNoAntenne As String
            Dim sPreviousNoDoc As String
            Dim sBicWhere As String
            Dim sWhere As String
            Dim cmd As SqlCommand
            Dim rs As ADODB.Recordset
            Dim ds As New DataSet
            Dim da As New SqlDataAdapter
    
            If bCheckDOM Then
                sBicWhere = "BIC <> ''"
                rptfile = sCRFactMensDOM
            Else
                sBicWhere = "BIC = ''"
                rptfile = sCRFactMens
            End If
    
            crReport = New ReportDocument()
            crReport.Load(rptfile)
            crApp.ReportSource = crReport
    
            'crRepp = crApp.OpenReport(rptfile)
            crApp.ShowRefreshButton = False
            crApp.ShowCloseButton = False
            crApp.ShowGroupTreeButton = False
    
            Dim crLogin As CrystalDecisions.Shared.TableLogOnInfo
    
            crLogin = crReport.Database.Tables(1).LogOnInfo
            'crLogin.ConnectionInfo.ServerName = sServerName
            'crLogin.ConnectionInfo.DatabaseName = "Antennes"
            crLogin.ConnectionInfo.UserID = sDbUser
            crLogin.ConnectionInfo.Password = sDbPassword
            crReport.Database.Tables(1).ApplyLogOnInfo(crLogin)
    
            SQL = "SELECT NroFact,PaysFactur,PJ,MailFactur" _
                & "$ FROM FACTURE" _
                & "$ WHERE TypFact = 'MENS'" _
                & "$   AND PeriodeFact = '" & sPeriodeFact & "'" _
                & "$   AND " & sBicWhere _
                & "$   AND Ok = 0" _
                & "$ ORDER BY NroFact"
    
            rs = SqlExecute(SQL)
    
            Do Until rs.EOF
    
                ' Fill report parameters
                'Dim crParameters As ParameterFields = crApp.ParameterFieldInfo
                'Dim crParam As New ParameterValues()
    
                For Each crParamDef In crReport.DataDefinition.ParameterFields
                    Select Case crParamDef.Name '.ParameterFieldName
                        Case "TypeDocument" : SetCurrentValue(sFactureTitre)
                        Case "Responsable" : SetCurrentValue(sResponsable)
                        Case "Telephone" : SetCurrentValue(sTelephone)
                        Case "email" : SetCurrentValue(sEmail)
                    End Select
                Next crParamDef
    
                sNoDoc = rs.Fields("NroFact").Value
                sPaysFact = rs.Fields("PaysFactur").Value
                sMail = rs.Fields("MailFactur").Value
    
                If sNoDoc <> sPreviousNoDoc Then
                    sPreviousNoDoc = sNoDoc
                End If
    
                SQL = "SELECT *" _
                    & "  FROM FACTURATION" _
                    & "  WHERE NroFact = '" & sNoDoc & "'" _
                    & "  ORDER BY ID"
    
                da = New SqlDataAdapter(SQL, cn)
                da.Fill(ds, "FACTURATION")
                da.Dispose()
    
                SQL = "SELECT *" _
                    & "  FROM FACTURE" _
                    & "  WHERE NroFact = '" & sNoDoc & "'"
    
                da = New SqlDataAdapter(SQL, cn)
                da.Fill(ds, "FACTURE")
                da.Dispose()
    
                crReport.SetDataSource(ds)
    
                For Each crParamDef In crReport.DataDefinition.ParameterFields
                    Select Case crParamDef.Name '.ParameterFieldName
                        Case "TypeDocument" : SetCurrentValue(sFactureTitre)
                        Case "Responsable" : SetCurrentValue(sResponsable)
                        Case "Telephone" : SetCurrentValue(sTelephone)
                        Case "email" : SetCurrentValue(sEmail)
                    End Select
                Next crParamDef
    
                crReport.ExportToDisk(ExportFormatType.PortableDocFormat, sPathPJ & rs.Fields("PJ").Value)
    
                ds.Clear()
    
                rs.MoveNext()
            Loop
    
            crReport.Close()
    
        End Sub
    
        '****************************************************************************************************
        '* SetCurrentValue()
        '****************************************************************************************************
        '* Impression des factures mensuelles en un lot (unseul fichier PDF)
        '****************************************************************************************************
    
        Public Sub SetCurrentValue(ByVal sText As String)
            Dim crField As New ParameterValues
            Dim crValue As New ParameterDiscreteValue
    
            crValue.Value = sText
            crField.Add(crValue)
            crParamDef.ApplyCurrentValues(crField)
            'crParamDef.CurrentValues.Add(crValue)
            'crParamDef.CurrentValues = crField
        End Sub
    


    Le programme a mis jusqu'à 6 minutes pour générer 1365 factures.

    -2