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 :

[D5][SQL Server] Conserver des images dans la BDD


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut [D5][SQL Server] Conserver des images dans la BDD
    Bonjour,

    J'utilise Delphi 5 avec SQL Server

    Mon problème est le suivant :

    J'ai une base de données sous SQL Server et le programme est écrit avec Delphi 5. Nous voulons conserver dans la table CLIENTS la photo du client et sa signature. Alors je sais qu'il va falloir scanner la photo et la signature, ajouter deux champs de type <image> à la table CLIENTS. Mais je ne sais pas comment faire pour garder les deux images dans la base de données SQL Server.

    Je vous remercie d'avance

  2. #2
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    Je n'utilise pas SQL serveur mais par prog tu dois pouvoir remplir ton champ en fesant : nomtablenomchamp.LoadFromFile(endroit ou est enregistré la photo);
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dm1.ClientsPhoto1.LoadFromFile(C:\photos\Clientpernaud.jpg);

    Attention le .NET sur PDA peut causer des chutes de cheveux

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Gérer les images sous Delphi
    Merci Harry

    Vous m'avez réponndu promptemennt !

    Votre réponse laisse entendre que les images ne sont pas stockées sous SQL Server mais dans un fichier .jpg quelque part sur disque. Et puis, à quel moment doit-on utiliser l'instruction LoadfromFile ? A l'affichage de la fiche ?

    Ma question aurait pu être : Comment utiliser le type champ image de SQL Server ?

    Merci

  4. #4
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    En fait l'exemple donne la marche à suivre pour transférer la photo du fichier .jpg (ou bmp) vers la base.
    Après ca dépend de la bdd et je ne connais pas bien SQL Server.

    Attention le .NET sur PDA peut causer des chutes de cheveux

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Toujours sur la gestion des images
    Merci Harry

    Vous avez parfaitement raison. J'ai essayé votre exemple et cela marche. Mais j'ai encore deux questions à poser concernant cet exemple:

    1 - Premièrement seules les images .bmp passent. Les .jpg me renvoient une erreur

    2 - Je n'arrive pas à faite Query1.Post pour certaines images. J'ai le message d'erreur :

    << Longueur de BLOB incorrecte>> Après ce message l'image est quand même affichée dans le TDBImage mais n'a pas été stockée dans la base des donnnées.


    Merci

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Gérer les images souus Delphi 5.0
    Je rappelle que j'ai Delphi 5.0

  7. #7
    Membre habitué Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Points : 157
    Points
    157
    Par défaut Tiens
    Pour insere les images

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    With requete_query do
      Begin
         Active:=False;
         Sql.clear;
         Sql.Add('Insert into ta_table(id_ta_table, images) ' 
                  +' Values(3, :mon_image));
                         {On lui donne le chemin de l'image a charger dans la base}
          Parameters.ParaByName('mon_image').LoadFromFile(le_chemin, ftBlob);
           ExecSql;
       End;
    Et pour la recupere

    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
    18
    19
    20
    21
    22
    23
     
    Var MS:TMemoryStream;
    Begin
    MS:=TMemoryStream.Create;
     
    With Query_recupere Do
      Begin
          Active:=false;
          Sql.Clear;
          SQl.Add('Select image from ta_table where id_ta_table=3');
          ExecSql;
          Active:=True
       End;
    Try
                  {On auve dans leStream}
      TBlobField(Query_recupere .FieldByName('image')).saveToStream(MS);
                   {On se déplace au début du Stream}   
      MS.Position:=0;
                     {On affiche l'image}
      DBImage.Picture.Bitmap.LoadFromStream(MS);
    Finally
      MS.Free;   {On libere la memoire du Stream}
    End;
    Voilà avec ça sa fonctionne !
    A.Morel

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par alexmorel Voir le message
    Pour insere les images

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    With requete_query do
      Begin
         Active:=False;
         Sql.clear;
         Sql.Add('Insert into ta_table(id_ta_table, images) ' 
                  +' Values(3, :mon_image));
                         {On lui donne le chemin de l'image a charger dans la base}
          Parameters.ParaByName('mon_image').LoadFromFile(le_chemin, ftBlob);
           ExecSql;
       End;
    Et pour la recupere

    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
    18
    19
    20
    21
    22
    23
     
    Var MS:TMemoryStream;
    Begin
    MS:=TMemoryStream.Create;
     
    With Query_recupere Do
      Begin
          Active:=false;
          Sql.Clear;
          SQl.Add('Select image from ta_table where id_ta_table=3');
          ExecSql;
          Active:=True
       End;
    Try
                  {On auve dans leStream}
      TBlobField(Query_recupere .FieldByName('image')).saveToStream(MS);
                   {On se déplace au début du Stream}   
      MS.Position:=0;
                     {On affiche l'image}
      DBImage.Picture.Bitmap.LoadFromStream(MS);
    Finally
      MS.Free;   {On libere la memoire du Stream}
    End;
    Voilà avec ça sa fonctionne !
    Effectivement ; et franchement merci pour ce bout de code.
    ça m'a permis d'inserer mes images et de les récupérer de la base de données.
    Mon champs 'image' est de type <image> au niveau de la table ou j'insere l'image (base de données Sql server 2000).

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    SVP, j'ai le même besoin, j'utilise une table Access, connexion en ADO.
    Pour votre info, la table Client se trouve sur un Data Module avec le Nom : ADOTable_Clients
    TABLE NAME : CLIENTS
    La clé primaire de la table c'est : NCIN
    L'attribut des photos (FieldName) : PhotoduClient
    Donc d'après la solution d'alexmorel, j'ajoute un ADOQuery nommé : ADOQuery_recupere
    Et un bouton avec ce code pour charger l'image ???

    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
    18
    19
    20
    21
    22
    23
    24
    procedure TForm_AjtClient.Button1Click(Sender: TObject);
    Var MS:TMemoryStream;
    Begin
    MS:=TMemoryStream.Create;
     
    With ADOQuery_recupere Do
      Begin
          Active:=false;
          Sql.Clear;
          SQl.Add('Select PhotoduClient from CLIENTS where NCIN=3');
          ExecSql;
          Active:=True
       End;
    Try
                  {On auve dans leStream}
      TBlobField(ADOQuery_recupere .FieldByName('PhotoduClient')).saveToStream(MS);
                   {On se déplace au début du Stream}
      MS.Position:=0;
                     {On affiche l'image}
      DBImage_PhotoClient.Picture.Bitmap.LoadFromStream(MS);
    Finally
      MS.Free;   {On libere la memoire du Stream}
    End;
    end;
    Quand je cliques dessus j'aurai cet erreur :

    Le projet a provoqué une classe dexception EOleException avec le message 'Le paramètre id_CLIENTS n'a pas de valeur par défaut'.


    C'est quoi la solution SVP.

Discussions similaires

  1. Insérer une Image dans une BDD SQL Server
    Par bluerequin dans le forum Développement
    Réponses: 15
    Dernier message: 23/11/2016, 10h53
  2. Stocker les chemins des images dans la BDD
    Par brestoise dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/06/2013, 14h47
  3. Stocker et récupérer des images dans une BDD externe
    Par bigwade dans le forum Android
    Réponses: 10
    Dernier message: 12/02/2013, 16h20
  4. Impossible d'enregistrer des images dans la BDD
    Par cashmoney dans le forum JDBC
    Réponses: 0
    Dernier message: 30/09/2009, 17h39
  5. Insérer des images dans une BDD Access
    Par polothentik dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 06/05/2008, 09h00

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