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

Delphi Discussion :

Comment récupérer le chemin d'une image adodataset1 et l'imprimer sur frxreport


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cook (iles)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2023
    Messages : 4
    Points : 7
    Points
    7
    Par défaut Comment récupérer le chemin d'une image adodataset1 et l'imprimer sur frxreport
    Salut chers développeurs

    Je suis un étudiant débutant en Delphi, svp aidez-moi à résoudre ce problème.
    Je veux afficher une image sur frxreport dans le masterdetail. Voici comment j'ai procéder
    pour stocker l'image dans ma base des données. j'ai utilisé acess, j'ai créé un champ photo pour récuperr l'image
    de chaque enregistrement. J'ai utilisé Adodataset,adoconnection pour recuperer les données.
    Dans mon form1, j'ai placé les composants timage,opendialog et un dbedit pour récuperer le chemin de l'image.
    Dans l'événéement ondlclic de image1 j'ai codé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    opendialog1.Execute;
     dbedit12.text:=opendialog1.FileName;
     image1.Picture.LoadFromFile(opendialog1.FileName);
    et puis dans dbeditonchage j'ai codé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if dbedit12.text<>'' then
     image1.Picture.LoadFromFile(dbedit12.Text)
     else
     image1.Picture.LoadFromFile('D:\Mes_Images\login.jpg');
    Par contre dans frxreport lorsque je place un picture objet dans le masterdetail et je remplis le dataset et datafield
    L'image de s'affiche pas.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    c'est confus !
    D'un côté vous nous indiquez un code concernant l'interface utilisateur permettant de sélectionner une image sans pour autant nous indiquer le code qui va faire ceci
    j'ai utilisé Access, j'ai créé un champ photo pour récupérer l'image de chaque enregistrement.
    De plus, vous n'indiquez pas si la colonne de la table Access va contenir l'image ou son chemin

    Ensuite, on passe plus ou moins à la partie FastReport mais c'est succint ! (Notez que FastReport a son propre forum chez DVP)
    J'ai utilisé Adodataset,adoconnection pour recuperer les données.
    Par contre dans frxreport lorsque je place un picture objet dans le masterdetail et je remplis le dataset et datafield
    L'image ne s'affiche pas.
    Il semblerait que ce soit donc le chemin de l'image et non l'image elle-même qui soit dans la colonne auquel cas il va falloir traiter le chargement de l'image via du FastReport Script. Tout dépand donc de la version FastReport (je parle de la version Embarcadero ou celle achetée) que vous avez car vous n'aurez peut-être pas la possibilité d'utiliser le Script Pascal.
    J'ai décris le processus dans cette discussion

    J'ai utilisé Adodataset,adoconnection pour recupérer les données.
    Où ? Si c'est dans le FastReport (c'est pas clair) , je me demande pourquoi un frxDBDataSet, posé sur la forme Delphi serait peut-être plus facile à utiliser.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Et dire quand j'étais étudiant, l'impression c'était en mode texte sur une imprimante à aiguille (1999 vive les moyens des universités françaises) ou alors sur le Canvas en 300DPI (très formateur de savoir ce qu'est le DPI)
    FastReport c'est tellement trop avancé et inutile à apprendre (il y a trop de lib du genre, ReportBuilder, CrystalReport, RaveReport, QuickReport ... )


    Attention, stocker l'image dans un Blob ce n'est pas forcément le choix le plus léger
    Il est envisageable d'utiliser un répertoires images de votre application et stocker les chemins à la place, dans un environnement professionnel, un outil de GED, un simple FTP fera le travail, un chemin arborescent astucieux permettant de retrouver à qui appartient les images sans forcer mettre tous les liens en DB mais c'est un autre sujet.
    Le Dossier de la base Acces pouvant servir pour stocker les images, une application locale scolaire n'en souffrira pas.


    Vous DEVEZ séparez la Saisie de l'impression
    Faites DEUX écrans différents, deux TADOQuery différent
    Cela va vous forcer à commencer par bien stocker vos données puis ensuite comment les exploiter
    Tout mettre dans une seule TForm1 c'est un biais qui sera surement faux et c'est confusant.

    La partie alimentation de données doit être TOTALEMENT DISJOINTE de la partie impression.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Renseigne FileLink dans l'événement OnBeforePrint.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent);
    begin
      TfrxPictureView(frxReport1.FindObject('Picture1')).FileLink := dbedit12.Text;
    end;

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/02/2023, 23h55
  2. Réponses: 3
    Dernier message: 06/08/2013, 12h43
  3. [MFC] Récupérer le chemin d'une image
    Par Rafoo dans le forum MFC
    Réponses: 2
    Dernier message: 08/06/2006, 14h52
  4. Réponses: 3
    Dernier message: 10/03/2006, 14h15
  5. Comment récupérer le chemin d'une table liée
    Par ptitepunk dans le forum Access
    Réponses: 2
    Dernier message: 15/09/2005, 10h47

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