Pb crystal report version 10 et VB6

Didier -  
schlebe Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

14 réponses

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
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
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
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
MARY_DESIGN Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
 
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
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
cha3nouna
 
ajouproblr de crystal report avec vb6
0
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
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
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
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
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
schlebe Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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
schlebe Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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