Rechercher : dans
Par :

Pb crystal report version 10 et VB6

Dernière réponse le 14 oct 2008 à 12:35:03 Didier, le 25 mai 2005 à 16:40:40 
 Signaler ce message aux modérateurs

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

1

Balin, le 6 jun 2005 à 10:54:04

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

Répondre à Balin

2

Mary, le 12 jun 2005 à 14:52:23

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!!

Répondre à Mary

9

hajer, le 29 mai 2007 à 15:06:34

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

Répondre à hajer

3

Balin, le 17 jun 2005 à 15:32:56

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 à+

Répondre à Balin

4

MARY_DESIGN, le 18 jun 2005 à 05:49:51
  • +1

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!!

Répondre à MARY_DESIGN

5

sahli, le 6 jui 2005 à 16:51:01

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.

Répondre à sahli

6

Balin, le 18 jui 2005 à 16:35:31

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 ^^

Répondre à Balin

7

Garf, le 25 jan 2007 à 13:57:39

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

Répondre à Garf

8

Night, le 29 mar 2007 à 14:23:24

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)

Répondre à Night

10

samir, le 14 jui 2007 à 16:55:47

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.

Répondre à samir

11

cha3nouna, le 25 oct 2007 à 11:07:20

Ajouproblr de crystal report avec vb6

Répondre à cha3nouna

12

cha3nouna, le 25 oct 2007 à 11:13:15

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

Répondre à cha3nouna

13

bmki, le 21 mar 2008 à 17:00:48

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.

Répondre à bmki

14

Lilou, le 10 avr 2008 à 17:30:49

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.

Répondre à Lilou

15

ahlem, le 10 mai 2008 à 21:40:01

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 .

Répondre à ahlem

16

llolo, le 3 jun 2008 à 15:23:17

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!

Répondre à llolo

17

schlebe, le 14 oct 2008 à 08:28:16

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

Répondre à schlebe

18

 schlebe, le 14 oct 2008 à 12:35:03

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.


Répondre à schlebe
Collection CommentÇaMarche.net