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 :

modifier une image dans un champ blob


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Par défaut modifier une image dans un champ blob
    salut tous j'ai un petit problème sur la modification d'un champ blop avec un Query
    j'ai donc une première foi enregistrer mon image dans un champ blob come ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DataModule2.TableMembre.FieldByName('Symbol').Value:=Symbol.Text;
    if Titre.Text='Mr' then
     DataModule2.TableMembre.FieldByName('Symbol').Assign(Image5.Picture.Bitmap)
    else
    DataModule2.TableMembre.FieldByName('Symbol').Assign(Image4.Picture.Bitmap);
    maintenant j'ai besoin de modifier mon champ blob ,mais je ne trouve pas la solution.
    Vous l'avez compris j'ai le choix entre plusieurs image si mon champs titre est égale à Mr etc...

    moi j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DataModule2.Query1.SQL.Clear;
    DataModule2.Query1.SQL.Add('Update matable.DB set Sexe = '+ QuotedStr(Titre.Text)
    +',Nom = '+ QuotedStr(Nom.Text)
    +',Prenom = '+ QuotedStr(Prenom. text)
    +',Symbol = '+ QuotedStr(Symbol.text)
    +',Symbol = '+ QuotedStr(Image4.Picture.Bitmap);//j'ai fais mon choix d'image
    +' where Idmembre ='+ QuotedStr(Id.caption)+'');
    DataModule2.Query1.ExecSQL;
    merci de votre aide

  2. #2
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut


    quel est le message d'erreur ?
    à quoi correspond le champ Symbol ?
    c'est lui le champ BLOB ?
    pourquoi lui assigner du texte,
    Citation Envoyé par tarmo57
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataModule2.TableMembre.FieldByName('Symbol').Value:=Symbol.Text;
    puis une image ?
    Citation Envoyé par tarmo57
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if Titre.Text='Mr' then
     DataModule2.TableMembre.FieldByName('Symbol').Assign(Image5.Picture.Bitmap)
    else
    DataModule2.TableMembre.FieldByName('Symbol').Assign(Image4.Picture.Bitmap);

    ne le dira-t-on jamais assez ? les paramètres c'est bon, mangez-en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    DataModule2.Query1.SQL.Clear;
    DataModule2.Query1.SQL.Add('Update matable.DB set Sexe = :Sexe'
    +',Nom = :Nom'
    +',Prenom = :Prenom'
    +',Symbol = :Symbol'
    +',Symbol2 = :Symbol2'
    +' where Idmembre = :Idmembre');
    DataModule2.Query1.ParamByName('Sexe').AsString := Titre.Text;
    DataModule2.Query1.ParamByName('Nom').AsString := Nom.Text;
    DataModule2.Query1.ParamByName('Prenom').AsString := Prenom.Text;
    DataModule2.Query1.ParamByName('Symbol').AsString := Symbol.Text;
    DataModule2.Query1.ParamByName('Symbol2').Assign(Image4.Picture.Bitmap);
    DataModule2.Query1.ParamByName('Idmembre').AsString := Id.Caption;
    DataModule2.Query1.ExecSQL;
    et puis l'instruction WITH me semble appropriée ici pour plus de lisibilité:
    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
    17
    with DataModule2.Query1 do 
    begin
      SQL.Clear;
      SQL.Add('Update matable.DB set Sexe = :Sexe'
        +',Nom = :Nom'
        +',Prenom = :Prenom'
        +',Symbol = :Symbol'
        +',Symbol2 = :Symbol2'
        +' where Idmembre = :Idmembre');
      ParamByName('Sexe').AsString := Titre.Text;
      ParamByName('Nom').AsString := Nom.Text;
      ParamByName('Prenom').AsString := Prenom.Text;
      ParamByName('Symbol').AsString := Symbol.Text;
      ParamByName('Symbol2').Assign(Image4.Picture.Bitmap);
      ParamByName('Idmembre').AsString := Id.Caption;
      ExecSQL;
    end;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Par défaut apres test
    Merci de ton aide evarisnea
    J'ai donc une erreur je vais te montrer le code que j'ai fais en amont
    dans ma table paradox mon champ BLOB et Symbol (Type G )
    Quand j'enregistre j'ai le choix entre deux images (Image4 et image5)par rapport
    au champs d un combobox (Mr ,Mme, Mlle) .
    l'enregistrement dans ma table ok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    DataModule2.TableMembre.Append;
    DataModule2.TableMembre.Edit; // Positionne la table en mode Edition
    DataModule2.TableMembre.FieldByName('Sexe').Value := Titre.Text;
    DataModule2.TableMembre.FieldByName('Nom').Value := Nom.Text;
    DataModule2.TableMembre.FieldByName('Prenom').Value := Prenom.Text;
     
    if Titre.Text='Mr' then
     DataModule2.TableMembre.FieldByName('Symbol').Assign(Image5.Picture.Bitmap)
    else
    DataModule2.TableMembre.FieldByName('Symbol').Assign(Image4.Picture.Bitmap);
     
    DataModule2.TableMembre.Post();
    l'enregistrement se passe bien et je peux relire mon image sans problème avec un DBimage.
    Maintenant j'ai besoin de la modifier toujours par rapport a mon combobox (Mr ,Mme, Mlle)
    je fais
    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
     
    with DataModule2.Query1 do 
    begin
      SQL.Clear;
      SQL.Add('Update assos_membre.DB set Sexe = :Sexe'
        +',Nom = :Nom'
        +',Prenom = :Prenom'
        +',Symbol = :Symbol'
        +' where Idmembre = :Idmembre');
      ParamByName('Sexe').AsString := Titre.Text;
      ParamByName('Nom').AsString := Nom.Text;
      ParamByName('Prenom').AsString := Prenom.Text;
      ParamByName('Symbol').Assign(Image4.Picture.Bitmap);
      ParamByName('Idmembre').AsString := Id.Caption;
      ExecSQL;
    end;
    pour le choix de l'image je le fais plus haut la je teste avec une seule image
    dans Symbol.text j'ai l'adresse de l'image sur mon disque dur ?? pourquoi je ne sais pas vraiment je crois l'avoir lu.
    et j'ai le message d'erreur
    Le projet1.exe a provoqué une classe d'exception EDBEngineError avec le message 'Différence de type dans une expression.'. Processus stoppé.
    Merci de ton aide

  4. #4
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    comme je l'ai remarqué plus haut dans mon précédent post, peut être à un moment tu écris du texte plutôt qu'une image dans le champ blob. et puis, pourquoi Symbol.text fait-il référence au champ blob censé contenir l'image

    pour le message d'erreur, vérifie les valeurs. genre, si le champ IdMembre est de type numérique, Id.Caption contient bien une valeur numérique ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 483
    Par défaut
    Citation Envoyé par evarisnea Voir le message
    comme je l'ai remarqué plus haut dans mon précédent post, peut être à un moment tu écris du texte plutôt qu'une image dans le champ blob. et puis, pourquoi Symbol.text fait-il référence au champ blob censé contenir l'image

    pour le message d'erreur, vérifie les valeurs. genre, si le champ IdMembre est de type numérique, Id.Caption contient bien une valeur numérique ?
    oui tu as raison c du text dans symbol.text
    je dois mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    +',Symbol = :Image4
    ??'

  6. #6
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    à mon avis, tu devrais créer un second champ, et ainsi avoir un champ qui contient uniquement l'image (le champ blob) et un champ qui ne contient que du texte (pour symbol).

    pourquoi écris-tu dans le même champ tantôt une image et tantôt du texte ?


  7. #7
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Salut.
    Citation Envoyé par tarmo57 Voir le message
    (...) aux champs d'un combobox (Mr, Mme, Mlle). (...)
    Bon, ça n'a rien à voir avec ton problème informatique, mais moi j'aime la culture française et je la défends, et j'essaye de la maintenir, aussi.

    Et en l'espèce, ici, il s'agit de « M., Mme, Mlle » si l'on veut être rigoureux (« Mr » c'est de l'anglais, ça !)

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/05/2010, 17h20
  2. Stockage d'une image dans un champ blob
    Par Wrack dans le forum JDBC
    Réponses: 3
    Dernier message: 29/04/2007, 21h48
  3. sauvegarder une image dans un champ blob ?
    Par eric95 dans le forum Hibernate
    Réponses: 4
    Dernier message: 26/10/2006, 10h41
  4. [MySQL] Afficher une image d'un champ blob d'une base MySQL
    Par lolobedo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/11/2005, 10h10
  5. Enregistrement d'image dans Interbase(champ Blob)
    Par the watcher dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/06/2005, 12h33

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