IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAP Crystal Reports Discussion :

[CR7] Insérer une image dynamiquement


Sujet :

SAP Crystal Reports

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2003
    Messages : 46
    Points : 73
    Points
    73
    Par défaut [CR7] Insérer une image dynamiquement
    Bonjour à tous !
    J'ai cherché partout... J'ai traqué, j'ai fureté, j'ai consulté les moindres arcanes du web... Rien ! Il me reste les forums, en espèrant qu'un gourou du CR puisse sauver mon âme avant que je ne la vende au diable...
    Beaucoup de personnes semblent avoir le même problème que moi, mais peu ont appremment la réponse !
    J'ai une table (Hetype) qui contient la description de chaque produit (Hetype.Description) et un n° différent (Hetype.Type) pour chaque produit.
    Exemple :
    Guitare 372
    Basse 4
    Ampli 98

    Chaque produit a en outre une photo qui lui correspond dans un dossier spécial. Toute ces photos sont de la forme "pic" + ToText({Hetype.Type,0}) + ".jpg"
    Exemple :
    photo de guitare = pic372.jpg
    photo de basse = pic4.jpg
    photo d'ampli = pic98.jpg

    Dans l'optique de faire un catalogue, je voudrais dans un rapport afficher la description d'un produit et son image. Oui mais voilà, je sais pas comment faire ! De plus, il n'est pas envisageable de passer l'image dans une base de donnée sous forme de Blob ou d'OLE.
    J'ai entendu dire qu'on pouvait le faire en VB... Une idée ?
    J'arrive à le faire avec un Etat d'Access, mais bon, ça serait beaucoup plus pratique pour moi si c'était fait avec CR !
    Pour ceux que ça intéresse, mon rapport sera lancé à partir d'un logiciel appelé HireTrack !
    Voilà voilà !
    Merci de vos réponse (pensez à mon âme ! )
    yoloosis

  2. #2
    Membre habitué
    Avatar de nabil
    Inscrit en
    Avril 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 223
    Points : 168
    Points
    168
    Par défaut
    Bon cher ami moi aussi j'en le même problème mais j'ai trouvé une solution que je n'ai pas encore tester.tu peux jeter un coup d'oeil sur ce lien:
    http://<br /> http://www.developpez...ighlight=image
    j'espére que ca t'aidera .si ca marchera dis le moi.
    Il ne faut jamais désesperer, il y a toujours une solution.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2003
    Messages : 46
    Points : 73
    Points
    73
    Par défaut
    J'ssaie tout de suite et je te dis quoi !
    Merci de la réponse !
    J'ai pas mal cherché sur le web : on est beaucoup avec le même problème, mais ni Seagate ni Microsoft avec VB ne sembles proposer de solutions efficaces...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2003
    Messages : 46
    Points : 73
    Points
    73
    Par défaut
    Bon, ben, ça va pas trop m'aider, vu que je n'ai pas C++-Builder. En fait, je n'ai que Visual Basic Editor, fourni avec office. Je ne sais pas si ça peut suffire pour programmer en VBA d'autres applications... NOTE : je suis néophyte dans la prog windows !
    yoloosis

  5. #5
    Membre habitué
    Avatar de nabil
    Inscrit en
    Avril 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 223
    Points : 168
    Points
    168
    Par défaut
    bon j'ai pas saisie la solution dans le lien que j'ai précisé alors y-a-t-il quelqu'un qui a une solution plus clair ou peu plus éclairé
    Il ne faut jamais désesperer, il y a toujours une solution.

  6. #6
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    C'est pourtant on ne peut plus claire. Moi je l'ai fait en Delphi ce que vous demandé.

    Il faut encore savoir que cette solution ne fonctionne pas dans l'apperçu de CrystalReport vu qu'il y a du code VB. IL faut absolument avoir un exe (En VB Delphi C++Builder....) pour faire l'apérçu de ce rapport.

    Alors dans l'ordre :
    1. Placer un objet OLE, appelé Picture1, dans un section, appelé Section3.

    Ca c'est pour la partie création du rapport, maintenant il faut faire une application windows qui vas utiliser crystal (CRAXDRT.DLL).

    2. Traper l'événement Format de la Section3 du rapport. Mais là je ne peux pas vous en dire plus cela dépend du language de programmation que vous utiliser.

    3. Et dans l'événement Format, modifier l'objet Picture avec l'image qui se trouve sur votre disque. Dans l'exemple :
    Set Picture1.FormattedPicture = LoadPicture(Field3.Value)

    Field3 pourait être un FormulaField qui retourne
    "pic" + ToText({Hetype.Type,0}) + ".jpg"

    Je vois pas ou ça peux coincé.
    Possé des questions plus précises.

    Bonne chance

  7. #7
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    Salut,
    j'ai vu que tu as reussi à exploiter ce code en Delphi...

    J'utilise Crystal CR9...
    et le composant VCL pour Delphi en version 8.5.0.9

    J'ai pris Le composant TCrpe sous Delphi,...et chargé le rapport en mettant à jour la propriété reportName...et là ..
    J'arrive pas à voir comment acceder :
    - à l'objet Picture1 lui meme ( je ne trouve que des propriétés du type OleObjects)

    - à l'objet Section3
    - ni à "Trapper" l'évènement de cette derniere section (est-ce dans l'inspecteur d'objet Delphi?)
    - je ne trouve aucune indication dans l'aide du composant Delphi VCL, concernant une propriete "FormattedPicture"
    - ni rien concernant une fonction LoadPicture ou equivalent ? ....

    ...pourrais tu donner quelques précisions sur ton implementation sous Delphi de ce code VB...?

    ( si j'arrive à le comprendre , je le traduirai en C++ Builder pour les autres ).

    Merci d'avance pour ta réponse.
    Djob.

  8. #8
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    Alors tu n'arive tout simplement pas à utiliser ce code sous Delphi car tu utilise le mauvais moteur Crystal.

    Le composant VCL de crystal utilise la CRPE32 alors que le code que je vous ai fournit utilise la CRAXDRT appelé aussi RDC.

    Pour utiliser le RDC sous Delphi il faut l'importer (Le RDC n'est rien d'autre que des objets COM)

    Pour ajouter le viewer : Component -> Import ActiveX control.... et la tu prend Crystal Report Viewer Control qui te donnera un TCRViewer.

    Pour ajouter le moteur : Projet -> Import Type Library... et la tu prend Crystal Report ActiveX Designer Run Time Library qui te donnera entre autre un TApplication et un TReport.
    Je te conseil de modifier le nom de toutes les classes P.Ex. TApplication en TCRApplication. Sinon certain classe du RDC seront en confli avec d'autre déjà existante dans Delphi.

    Après cela tu aura deux nouveaux fichiers CRVIEWERLib_TLB.pas et CRAXDRT_TLB.pas.

    Vas faire un tour dans CRAXDRT_TLB.pas cherche l'interface ISectionEvent et hoooooooooooooooo comme c'est joli justement notre petit événement format().
    Et pour finir on vas cherche notre objet OLE du rapport -> ICROleObject et là merveilleux il contient un propriété FormattedPicture.
    Comme c'est beau l'informatique quand ça marche.

    Voila je pense qu'avec ça il y a de quoi faire. La suite bien évidement apprendre à utiliser ce fameux RDC. Mais bon je vais attendre vos questions.

    Bonne chance

  9. #9
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    Je me disais aussi ...

    Merci beaucoup à toi pour ces précisions et pour ta précieuse contribution...

    Djob.

  10. #10
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    Ya pas de quoi,
    D'ailleur on pourrai faire un postIt qui explique comment utiliser le RDC dans Delphi.

  11. #11
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    L'installation du RDC sous Delphi marche nickel ,

    je vois à peu pres comment recuperer les objects de la section detail d mon rapport


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
              crSection := crReport.Sections.Get_Item('DetailSection1');
              Picture1 := crSection.ReportObjects.Get_Item('Picture1') as OleObject;
    mais je ne vois pas comment implementer l'evenement ISectionEvent en Delphi ...



    Quelqu'un peut il m'aider ?

  12. #12
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    J'ai installé l'environnement VB
    pour tester l'exemple en VB ( Load picture at Runtime) de chez crystal
    (http://support.crystaldecisions.com/...s/apps_rdc.pdf)

    Apparemment il y a un Designer Graphique (ICRDesigner) ,
    il suffit de cliquer sur la bande 'Section 3 ' et on atterrit dans le code de l'evènement Section3_Format
    Sous delphi , il ya des exemples ,
    (http://support.crystaldecisions.com/...pps_delphi.pdf),
    ...mais rien qui montre comment acceder à l'évènement de la section ...-((

  13. #13
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insérer une image dynamique
    Par AlexTetra dans le forum QlikView
    Réponses: 3
    Dernier message: 02/07/2013, 14h25
  2. Insérer une image dynamiquement
    Par subfestivus dans le forum VB.NET
    Réponses: 2
    Dernier message: 18/12/2012, 09h00
  3. Insérer une image "dynamique" google Static Maps
    Par lusitano11 dans le forum Jasper
    Réponses: 3
    Dernier message: 03/09/2009, 14h28
  4. [CR XI] Insérer une image dynamique depuis le référentiel
    Par Djoul dans le forum Formules
    Réponses: 1
    Dernier message: 27/02/2009, 09h37
  5. [FLASH MX2004] Insérer une image dynamiquement
    Par Brian3D dans le forum Flash
    Réponses: 5
    Dernier message: 04/04/2005, 10h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo