1. #1
    Futur Membre du Club
    Inscrit en
    juin 2007
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 136
    Points : 16
    Points
    16

    Par défaut Afficher un champs BLOB dans TImage

    Bonjour,

    J'arrive pas à afficher un champs image enregistré dans ma table dans un contrôle TImage (Image1).

    NB. C++Builder version 6 & Firebird :

    Structure de ma base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    .
    .
    code integer not null,
    nom varcahr(30),
    myimage BLOB SUB_TYPE 0 SEGMENT SIZE 80,
    .
    .
    à l'affichage, je met à jour les contrôle de ma fenêtre d'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EditCode->Text=MaTable->FieldByName("CODE")->AsInteger;
    EditNom->Text=MaTable->FieldByName("NOM")->AsString;
    comment puis-je mettre à jour le contrôle TImage :

    ce code me renvoir l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image1->Picture->Bitmap->Assign(DModule->MaTable->FieldByName("MYIMAGE")->AsBlob;



    C++Error MonFicher.cpp (234) E2034 AsBlob is not a member of 'TField'

  2. #2
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 163
    Points : 14 561
    Points
    14 561

    Par défaut

    Si je reprends juste ton code, il manquait le transtypage du TField

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TBlobField *bf = dynamic_cast<TBlobField*>(DModule->MaTable->FieldByName("MYIMAGE"))
    if (bf)
      Image1->Picture->Bitmap->Assign(bf->AsBlob);
    Voir aussi TGraphic et LoadFromStream
    Ainsi que le TDBImage !

    inspiré de mon code delphi dans le sujet Données de type IMAGE dans Delphi et SQLSever :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    void LoadDBImage(ITImage* I, TDataset* D, TField* F)
    {
      if (F && ! F.IsNull) 
      {
        TStream* m = D->CreateBlobStream(F, bmRead);
        if (m)
        try
        {
          I->Picture->Bitmap->LoadFromStream(m);
        }
        __finally
        {
          delete m;
        }
      }
    }
    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. afficher un champ blob dans ma page
    Par hammag dans le forum PHP & MySQL
    Réponses: 1
    Dernier message: 27/04/2009, 12h04
  2. Afficher un champ memo dans un dbgrid
    Par CharleLéo dans le forum Bases de données
    Réponses: 2
    Dernier message: 24/11/2005, 17h21
  3. Mettre un champ Blob dans un Group By
    Par WebPac dans le forum SQL
    Réponses: 1
    Dernier message: 17/08/2005, 18h03
  4. [.NET][CR] Comment afficher une image blob dans un état ?
    Par moucrack dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 25/06/2005, 13h49
  5. Affectation d'un champs blob dans une var de type TStrings
    Par Andry dans le forum Bases de données
    Réponses: 1
    Dernier message: 16/03/2005, 18h26

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