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 :

Comment Enregistrer un champ type BLOB avec Query ???


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 41
    Par défaut Comment Enregistrer un champ type BLOB avec Query ???
    j'ai mis la tête ce matin à chercher jusqu'ç ce que j'ai abouti à cette solution et marche très très bien :
    donc :
    j'ai déposé un Timage, et un TDBimage
    après le chargement de l'image bien sûr dans le TDBimage1 comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If OpenPictureDialogue1.execute THEN
       Image1.picture.LoadFromFile(OpenPictureDialogue1.FileName);
       TDBImage.picture := image1.picture;
    Dans l'évènement OnClick du Boutton pour enregistrer, je sauvegarde tous les champs excepter le champ Image que je laisse en dernier,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Query1.Close; 
    Query1.ParamBYname('Mon_Premier').text := Edit1.text ;
    Quey1.ParamByName('Mon_deuxieme').text := Edit2.text; 
    Query1.ExecSQL;
    après ces instruction le pointeur qui se déplace dans le dbgrid ce déplace quelque part, donc tDBimage ce déplace vers un autre endroit c'est pour ça qu'on a garder une copie dans le Image1 la-haut, dont il faut remettre le pointeur à sa place sur l'enregistrement en cours, je l'ai fait avec :

    FindKey([EditCle.text]) //déplace le pointure vers le champ indexé comme clé,puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Table1.Edit ;
    DBImage1.Picture := Image1.picture ;
    Table1.post;
    C Tout
    donc l'astuce été :
    1- Execution de la requette en premier pour sauvegarder tous les champs, excepter le champ Image
    2- Remettre le pointeur sur l'entregistrement en cours d'enregsitrement
    3- Effectuer une edition de la table puis sauvegarde du champ Photo

  2. #2
    rsc
    rsc est déconnecté
    Membre émérite
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Par défaut
    OpenPictureDialog .FileName est le nom du fichier qui contient l'image, pas l'image elle-même. Tu cherches donc à enregistrer un String dans un champ Blob. Je suppose que l'erreur vient de là.

    Roland

  3. #3
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    539
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 539
    Par défaut
    Citation Envoyé par rsc
    Tu cherches donc à enregistrer un String dans un champ Blob. Je suppose que l'erreur vient de là.

    Roland
    C'est exactement cela.
    Une astuce: Poser un TDBImage sur la fiche et l'associer au dataset correspondant. Un double-clic sur ce tDBImage ouvre automatiquement le dialogue qui va bien et enregistre l'image.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 41
    Par défaut
    justement, je l'est aussi essayé comme suit : j'ai relié TDBimage1 au DataSet correspondant et DataField au champ "Photo"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Query1.Close;
    Query1.ParamByName('Mon_Deuxieme').text := Edit1.text;
    Query1.ParamByName('Mon_Troisieme').text := Edit2.text;
     
    TDBImage1.Picture.LoadFromFile(OpenPictureDialogue1.FileName);
    Query1.ExecSQL;
    Ici ça marche, aucune erreur, mais, lorsque je me déplace avec un DBNavigator dans le DBGrid il m'affiche une erreur "le type du Bitmap incorrect". j'ai vérifé l'image elle porte exactement l'extension BMP.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/07/2011, 01h06
  2. champ type lookup avec valeur par defaut
    Par jeinny dans le forum CRM
    Réponses: 0
    Dernier message: 17/02/2010, 16h44
  3. Enregistrer un champ image BLOB sur disque
    Par dimah77 dans le forum Débuter
    Réponses: 1
    Dernier message: 22/06/2009, 16h12
  4. Réponses: 0
    Dernier message: 16/12/2008, 23h50
  5. Comment créer un champ auto increment avec netbeans
    Par une_tite_question dans le forum NetBeans
    Réponses: 4
    Dernier message: 25/04/2008, 18h17

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