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

HyperFileSQL Discussion :

Enregistrer des fichiers en base


Sujet :

HyperFileSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Enregistrer des fichiers en base
    Bonjour à tous,

    J'aimerais pouvoir enregistrer en base des fichiers windows (et non enregistrer les url).

    Ce que j'ai fait : j'ai crée le fichier de donné suivant :
    Nom : hfsql.PNG
Affichages : 2208
Taille : 273,5 Ko

    J'ai lu à plusieurs reprises qu'il me fallait un champ mémo, mais ce type n'est pas proposé dans la combo "type", j'ai fait passer en chaine, dans la combo "sous type", j'ai trouvé "mémo", est-ce la description est bien faite?

    D'autre part, j'ai un bouton qui permet de sélectionner des fichiers, ce bouton les ajoute en base, j'ai mis le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    l_fichier est une chaîne
    l_buff est un Buffer
    l_fichier=fSélecteur(fDisqueEnCours,"","Sélection d'un fichier","TOUT"+TAB+"*.*","",fselMulti)
    SI l_fichier<>"" ALORS
    	POUR TOUTE CHAÎNE loop_fichier DE l_fichier SEPAREE PAR RC
    		l_buff=fChargeBuffer(loop_fichier)
    		SI TableCherche(TABLE_REQ_SELECT_FICHIER_ALL.COL_MonFicherMemo,l_buff,rechercheIdentique)=-1 ALORS
    			//j'ai trouvé un nouveau fichier à ajouter
    			HExécuteRequête(REQ_INSERT_FICHIER,hAvecFiltre,l_buff,fExtraitChemin(loop_fichier,fExtension+fFichier))
    		FIN
    	FIN
    	TableAffiche(TABLE_REQ_SELECT_FICHIER_ALL,taCourantEnreg)
    FIN
    dans lequel :
    - TABLE_REQ_SELECT_FICHIER_ALL est une table liée à une requête SQL qui fait afficher tous les enregistrements du fichier de données MesFichiers
    - REQ_INSERT_FICHIER est une requête qui permet d'insérer un enregistrement dans le fichier de données MesFichiers, le 1er paramètre fait appel à la rubrique MonFichierMemo, le second, à NomFichier.


    Dans un autre écran, j'ai voulu lire le contenu de la rubrique MonFichierMemo pour reconstruire le fichier à l'aide de fSauveBuffer, le fichier windows a été créée, j'ai fait le test sur une image au format PNG, en voulant l'ouvrir, j'ai eu droit au message d'erreur suivant de la part de paint :
    Paint ne peut pas lire ce fichier. Ce fichier n'est pas un fichier bitmap valide, ou son format n'est pas pris en charge
    Je n'ai pas de soucis à lire le fichier initial.

    Des idées?
    Merci

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2017
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 343
    Par défaut
    Avant de répondre, je précise ce que j'ai compris: tu veux stocker des fichiers dans la base de données, par exemple un fichier PNG.
    Pour faire ça dans Windev il faut créer dans le fichier une rubrique avec un type Son,image,binaire et dans le sous type tu peux soit mettre image (ou son) soit mettre Autre mémo binaire (je fais ça par défaut, tu y stockes le fichier en binaire). Le type "Mémo" n'existe pas en tant que type d'une rubrique c'est un peu un raccourci. On peut stocker un texte dans un mémo texte, mais le binaire va aussi dans une rubrique mémo...la seule chose commune c'est que les données mémo atterrissent dans le fichier MONFICHIER.mmo sur le disque, et non dans MONFICHIER.fic

    Pour enregistrer le fichier dans la base tu utilises HAttacheMemo: https://doc.pcsoft.fr/?3044173
    Pour le récupérer tu prends HExtraitMemo: https://doc.pcsoft.fr/?3044072&name=...tmemo_fonction

    Et comme tu l'as précisé, tu ne veux pas stocker les chemins mais bien les fichiers, donc attention. Chaque fichier ajouté fait gonfler le mmo de la taille de ce fichier, si il doit être sauvegardé il faut le gérer. En général on ne stocke pas les fichiers dans la base de données si leur taille dépasse une limite...que moi perso je fixe à 1mo et c'est déjà grand si tu en stockes des milliers. Ca dépend des contraintes!

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/06/2016, 10h08
  2. Enregistrer des fichiers word, pdf, etc. dans une base de données
    Par mallsoul dans le forum Décisions SGBD
    Réponses: 23
    Dernier message: 10/09/2014, 15h48
  3. Réponses: 1
    Dernier message: 04/10/2011, 13h05
  4. Enregistrement des connections à la base
    Par @rkane dans le forum Access
    Réponses: 8
    Dernier message: 23/06/2006, 13h35
  5. enregistrement des fichiers tlb
    Par bidson dans le forum XMLRAD
    Réponses: 3
    Dernier message: 26/11/2003, 15h56

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