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 :

Stockage de documents (doc,pdf,xls) sous mysql


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2003
    Messages : 100
    Points : 50
    Points
    50
    Par défaut Stockage de documents (doc,pdf,xls) sous mysql
    Bonjour la communauté,
    J'aierais savoir si Mysql a les capacités de faire en quelques sortes de l'archivage des documents(pdf,excel,word) c'est a dire stocker sous mysql ses documents et les restituer à tout moment des que l'utilisateur en a bésoin.
    salut

  2. #2
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  3. #3
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2003
    Messages : 100
    Points : 50
    Points
    50
    Par défaut
    Salut Alexandre,
    j'en suis conscient pour le pour et le contre dans la faq mais c'est la procedure pour proceder à ces insertions et uploads.
    Je suis moi dans un environnement client serveur(delphi et mysql) et si j'utilise des chemins droits d'acces peuvent me poser des problemes surtout aujourd'hui(2003 server par exemple),donc je cherche la technque d'insertion et d'upload.
    salut

  4. #4
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    C'est plus un problème Delphi : je déplace dans ce forum.
    Pensez au bouton

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Cette future QR te permettra da faire ce que tu souhaites


    [QR] Comment insérer et récupérer un fichier dans un champ de type BLOB ?

    Cette QR prendra exemple avec les composants ADO mais elle est fonctionnel avec n'importe quel composant de base de données.

    Dans les exemples qui vont suivres, on considèrera que nous travaillons sur la structure de table suivante :

    Id : Champ auto incrémenté
    Nom : Champ texte/varchar de 100 en taille
    Fichier : Champ Blob

    A- L'insertion
    Il y a 2 méthodes pour insérer des documents (Images ,Documents Texte, programmes, etc ...) dans une base de données :

    1- Par chargement
    a- Avec une requete
    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
     
    if OpenDialog.execute then
      With AdoQuery do
      begin
        Close;
        SQL.Clear;
        SQL.add('insert into MaTable(Nom,Fichier)');
        SQL.Add('Values(:PNom,:PFichier)');
        ParamCheck := True;
        Parameters.ParamByName('PNom').Value := ExtractFileName(OpenDialog.Filename);
        Parameters.ParamByName('PFichier').LoadFromFile(OpenDialog.Filename, ftBlob);
      try
        ExecSQL;
      Except on E:Exception do
        begin
          Showmessage('Erreur lors de l'insertion de l''image dans la base de données : ' + 
           E.Message);
        end;
      end; 
    end;
    b- Avec une table
    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
     
    if OpenDialog.execute then
      With AdoTable do
      begin
         // Met la table en mode insertion de données
         Append; 
        // enregistrement du nom de fichier dans la base de données
        FieldByName('Nom').asString := ExtractFileName(OpenDialog.Filename);
        // Enregistrement du fichier dans la base de données
        (FieldByName('Fichier') as TBlobField).LoadFromFile(OpenDialog.Filename, ftBlob);
      try
         // On ajoute dans la base de données
         Post; 
      Except on E:Exception do
        begin
          // On annule la tentative d'ajout dans la base de données
          Cancel; 
          Showmessage('Erreur lors de l'insertion de l''image dans la base de données : ' + 
            E.Message);
        end;
      end; 
    end;
    2- Par assignation

    Cette méthode nécessite que l'on connaisse à l'avance le type de données que l'on va transmettre à la base de données.
    Dans les deux exemples qui vont suivre, nous utiliseront des images.
    a- Avec une Requete
    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
    25
    26
    27
    28
    29
    30
     
    var
      Img : TBitmap;
    begin
      if OpenDialog.execute then
      try
         img := TBitmap.Create;
         img.LoadFromFile(OpenDialog.FileName);
        With AdoQuery do
        begin
          Close;
          SQL.Clear;
          SQL.Add('insert into MaTable(Nom,Fichier)');
          SQL.Add('Values(:PNom,:PFichier)');
          ParamCheck := True;
          Parameters.ParamByName('PNom').Value := ExtractFileName(OpenDialog.Filename);
          Parameters.ParamByName('PFichier').Assign(Img);
          try
            ExecSQL;
          Except on E:Exception do
            begin
              Showmessage('Erreur lors de l'insertion de l''image dans la base de données : ' + 
              E.Message);
            end;
          end; 
        end;
      finally
        img.free;
      end;
    end;
    b- Avec une Table
    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
    25
    26
    27
    28
    29
    30
    31
    32
     
    var
      Img : TBitmap;
    begin
      if OpenDialog.execute then
      try
         img := TBitmap.Create;
         img.LoadFromFile(OpenDialog.FileName);
         With AdoTable do
        begin
         // Met la table en mode insertion de données
         Append; 
         // enregistrement du nom de fichier dans la base de données
         FieldByName('Nom').asString := ExtractFileName(OpenDialog.Filename);
         // Enregistrement du fichier dans la base de données
         FieldByName('Fichier').Assign(Img);
         try
           // On ajoute dans la base de données
           Post; 
         Except on E:Exception do
           begin
             // On annule la tentative d'ajout dans la base de données
              Cancel; 
             Showmessage('Erreur lors de l'insertion de l''image dans la base de données : ' + 
              E.Message);
           end;
         end; 
       end;
      finally
        img.free;
      end;
    end;
    B- La récupération

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
      sPath : String
    begin
      With AdoTable do
      begin
        // Récupération du nom du fichier
        sPath := ExtractFilePath(Application.ExeName) + FieldByName('Nom').AsString;
        // sauvegarde du fichier
        TBlobField(FieldByName('Fichier')).SaveToFile(sPath);
      end;
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  6. #6
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Août 2010
    Messages : 58
    Points : 29
    Points
    29
    Par défaut
    pardonner moi est ce que je peux suivre la même procédure pour SQL server 2008!!

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Oui cela fonctionnera.

    La QR est indépendante du système de base de données.
    Il faut juste avoir les bon format de champs.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Personnellement, j'utilise le stockage de fichier PDF en BLOB Zippé en Level 9, c'est plutôt stable !
    Sinon on stocke très régulièrement des XML en BLOB, cela fonctionne très bien aussi !

    Par contre, il est important d'avoir une Tableau dédié au Blob (avec quelques champs de recherche) et éviter le SELECT * lorsque l'on souhaite lister le fichier, la récupération du BLOB ne doit être faite qu'au moment utile !
    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. Indexer Word PDF XLS sous PHP
    Par hugo69 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/05/2009, 02h03
  2. [debutant]ouvrir un fichier doc, pdf, xls, ..
    Par christopheEU dans le forum ASP.NET
    Réponses: 7
    Dernier message: 14/10/2008, 17h54
  3. convertir des documents doc en pdf
    Par choupeo dans le forum Documents
    Réponses: 2
    Dernier message: 07/12/2007, 08h36
  4. Réponses: 2
    Dernier message: 23/10/2007, 08h18
  5. Stockage .jpg .doc et .xls en base, comment faire ?
    Par bagman dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 28/02/2007, 17h36

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