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

Bases de données Delphi Discussion :

afficher une image a partir d'un champ Blob


Sujet :

Bases de données Delphi

  1. #1
    Membre actif

    Inscrit en
    Mai 2010
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 401
    Points : 294
    Points
    294
    Par défaut afficher une image a partir d'un champ Blob
    Bonjour a tous ,
    je vais essayé de bien exposé mon problème .
    j'ai une base de donnée Interbase 7.5 , dans la table des produit j'ai un champs de type Blob .
    je sauvegarde des fichiers Excel dans ce champ , pour cela j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    blob := MonDataSet.CreateBlobStream(MonDataSet.FieldByName('MonChamp'), bmWrite);
    try
       blob.Seek(0, soFromBeginning);
     
       fs := TFileStream.Create('C:\MonFichierExcel.xls', fmOpenRead or fmShareDenyWrite );
       try
         blob.CopyFrom(fs, fs.Size)
       finally
         fs.Free
       end;
    finally
       blob.Free
    end;
    pour l'insertion je n'ai aucun problème.
    Maintenant je veux afficher le contenu de mon fichier Blob (et ça le problème )

    j'ai trouvais 2 solutions :
    1- afficher le fichier Excel (mais j'aimerais bien qu'il soit dans une fiche).
    2- copier le contenue du champs blob dans le presse-papier , puis l'afficher sous form d'image.
    svp avais vous des idées.
    (je ne cherche pas a modifier le fichier Excel).
    Cordialement.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 449
    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 449
    Points : 24 856
    Points
    24 856
    Par défaut
    Tu fais la procédure inverse !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    blob := MonDataSet.CreateBlobStream(MonDataSet.FieldByName('MonChamp'), bmRead);
    try
       blob.Seek(0, soFromBeginning);
     
       TempXLSName := GetTemporaryFileName('.xls');
       fs := TFileStream.Create(TempXLSName, Create);
       try
         fs.CopyFrom(blob, blob.Size);
       finally
         fs.Free();
       end;
    finally
       blob.Free();
    end;
    je te laisse coder ta propre GetTemporaryFileName qui utilise GetTempPath pour créer un fichier temporaire, je le fais de la forme "..\TMP\CompanyName\ExeName\TMP_yyyymmdd_hhnnsszzz.ext"

    Ensuite un ShellExecute ou un Excel OLE pour afficher le fichier temporaire, tu le supprimes ensuite !
    Pour l'inclure dans une forme, faudra tenter un TWebBrowser qui utiliserait le composant IE qui affiche les documents office (si c'est installé)

    Dans le sujet [D7] Ouvrir Excel dans une form , on évoqué FindWindow(XLMain) et SetParent pour inclure Excel dans une form avec tous les risques d'instabilité que cela peut produire !

    Pour le mode Image, il faudrait demander à Excel d'imprimer le fichier dans une Imprimante virtuelle BMP (on avait un outil Kodak avec Win2K pour le faire, je n'ai pas trouvé d'équivalent en XP) ou PDF, tu pourras ainsi afficher juste l'image

    Idem, il existe une solution avec FindWindow\GetDC ... peut-être forcer excel à se dessiner dans un Canvas, mais cela doit nécessité qu'il soit afficher (en l'affichant en position -32000, tu peux fonctionner ...

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 02/10/2010, 21h42
  2. [MySQL] afficher une image a partir d'un champs blob
    Par duko57 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/04/2008, 14h22
  3. Afficher une image a partir de lien.
    Par Didibzh dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 11/06/2007, 17h31
  4. Réponses: 6
    Dernier message: 12/02/2007, 18h27
  5. Afficher une image SVG à partir du Java
    Par choumane dans le forum Multimédia
    Réponses: 3
    Dernier message: 03/12/2006, 19h52

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