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

WinDev Discussion :

Manipuler les champs blobs sous une base externe [WD14]


Sujet :

WinDev

  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut Manipuler les champs blobs sous une base externe
    Bonjour a tous
    je développe sous firebird 2.5 et windev14.
    je suis confronter a la gestion des blobs de type image, quand je parle de gestion entendez par la :
    1. Enregistrer du blob (image) dans la base de donnée,
    2. Affiche du du blob (image) de la base de donnée,

    j'ai lu un peu les Mémo binaires mais je ne sais pas comment les manipuler !
    merci a tous !

  2. #2
    Membre éprouvé Avatar de miripesage
    Homme Profil pro
    gerant
    Inscrit en
    Novembre 2009
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gerant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 725
    Points : 1 156
    Points
    1 156
    Par défaut
    Citation Envoyé par devalender Voir le message
    Bonjour a tous
    je développe sous firebird 2.5 et windev14.
    je suis confronter a la gestion des blobs de type image, quand je parle de gestion entendez par la :
    1. Enregistrer du blob (image) dans la base de donnée,
    2. Affiche du du blob (image) de la base de donnée,

    j'ai lu un peu les Mémo binaires mais je ne sais pas comment les manipuler !
    merci a tous !
    Bonjour, je pense qu'il faut mettre le champ de la BDD à : mémo et affecter le contenu du champ blob au champ image.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    Citation Envoyé par miripesage Voir le message
    Bonjour, je pense qu'il faut mettre le champ de la BDD à : mémo
    ce qui est déjà fait.

    Citation Envoyé par miripesage Voir le message
    Affecter le contenu du champ blob au champ image.
    justement c'est là que se trouve la difficulté
    un insert <mon champ blob> ne marche pas ! ya un truc a faire je suppose.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    là encore je reviens j'ai chercher partout mais j'ai encore pas de solution !

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 050
    Points : 9 462
    Points
    9 462
    Par défaut
    hello,

    je ne sais pas ce que tu utilises pour dialoguer avec ta base de données Firebird (ODBC driver, FB4WD ?). Avec une base de données Firebird (version 2.5) et le driver ODBC Firebird/Interbase ( version 2.0.0.151), je travaille sur une base à 8 tables dont 1 table avec une rubrique BLOB image et une rubrique BLOB texte. Je créée une source de données avec cette base par ODBCad32.exe. Je fabrique un projet en RAD automatique dont l'analyse contient la table à 2 blobs en connexion accès natif /autre accès OLE DB. Je compile. Pour lister les enregistrements pas de problème : dans la table créée par le RAD je vois bien tous les enregistrements , les photos (BLOB image) et les notes (BLOB texte). Dans la fenêtre de fiche (Modifier) je rajoute un bouton qui change le contenu du champ image de la photo. Je fais un "valider". Après avoir eu un message d'erreur de type "column unknown" j'ai changé par odbc32 la configuration du driver pour ma base. J'ai coché l'option autoquoted identifier et la plus de problèmes. La photo que je change est bien inscrite en base.

    Ami calmant, J.P

  6. #6
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    je ne sais pas ce que tu utilises pour dialoguer avec ta base de données Firebird (ODBC driver, FB4WD ?).
    j'utilise un driver ODBC.


    Citation Envoyé par jurassic pork Voir le message
    jJe fabrique un projet en RAD automatique dont l'analyse contient la table à 2 blobs en connexion accès natif /autre accès OLE DB. Je compile. Pour lister les enregistrements pas de problème : dans la table créée par le RAD je vois bien tous les enregistrements , les photos (BLOB image) et les notes (BLOB texte). Dans la fenêtre de fiche (Modifier) je rajoute un bouton qui change le contenu du champ image de la photo. Je fais un "valider". Après avoir eu un message d'erreur de type "column unknown" j'ai changé par odbc32 la configuration du driver pour ma base. J'ai coché l'option autoquoted identifier et la plus de problèmes.
    ok la je pense que dans votre base vous avez déjà vos champs blob,
    mais
    1. quelle type vous donnez a vos champs blobs au niveau de l'analyse dans windev ?
    2. quelle est aussi le type du champ au niveau du composant table qui affiche les données image ?

    Merçi pour ce tuyau en tout cas je vais creuser

  7. #7
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 050
    Points : 9 462
    Points
    9 462
    Par défaut
    bonjour,
    dans l'analyse les champs blob sont de type :
    son,image,binaire sous type image (memo binaire) pour photos et
    texte mémo texte pour notes

    dans la table : image pour photos.
    texte pour notes.

    Ami calmant, J.P

  8. #8
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    ok en résumé

    Dans mon analyse :
    type :son,image,binaire
    sous type :image (memo binaire) pour photos

    Dans la table ou mon champ de saisie :
    image pour photos.
    A partir la je lance mon rad et dans le formulaire qui est produit je met un bouton 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
     
    sNomFichier est une chaîne 	// Nom du fichier correspondant à la capture
     
    // Sélection de la capture
    sNomFichier= fSélecteurImage("", "", "Ouvrir une Photo")
     
    // On vérifie la sélection de l'utilisateur
    SI sNomFichier="" ALORS RETOUR
     
    // Affichage du fichier
    MAPHOTO=sNomFichier
    Ensuite dans le bonton d'insertion voici le code
    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
     
    sCommande ="INSERT INTO NEW_TABLE1("+... 
    "MONNUM, "+...			
    "MAPHOTO )"+...			
    "VALUES 
    ("+...
    Quote(MONNUM..Nom)+","+...
    Quote(MAPHOTO..Nom)+")"
     
    SI SQLExec(sCommande,"REQFIC")=Faux ALORS
    // Vérifie l'erreur d'identifiant déjà utilisé
    SQLInfoGene("REQFIC")
    Info("Erreur SQL : " + SQL.MesErreur)
    SI SQL.Erreur<>"23000" ALORS
    // Pas Erreur de doublon: on affiche l'erreur
    SQLErreur("REQFIC")
    RETOUR
    SINON
    // Erreur de doublon
    Erreur("Erreur de doublon lors de l'ajout de l'enregistrement")
    SQLFerme("REQFIC")
    RETOUR
    FIN
    SINON
    // Insertion correcte
    SQLFerme("REQFIC")
    SORTIR
    FIN
    En faisant un Trace(" ",sCommande) j'ai pas l'image mais le chemin de l'image, d’où ma question ! comment charger l'image avant l'insertion ?

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 050
    Points : 9 462
    Points
    9 462
    Par défaut
    Bonjour,

    dans la doc PCSOFT de SQLExec c'est écrit :
    Gestion des mémos binaire

    Pour écrire un mémo binaire dans une table (avec un ordre SQL UPDATE ou INSERT), il faut utiliser la syntaxe suivante dans le texte de la requête :

    {WDMemoBinaire('<NomFichier>' [,'Fichier']}
    Copier ce code

    Fichier (valeur par défaut) indique que le mémo est un mémo binaire (issu d'un fichier)
    WDMemoBinaire est un mot réservé

    <NomFichier> est le nom physique d'un fichier


    {WDMemoBinaire('<NomFichier>' [,'FichierTexte']}
    Copier ce code

    FichierTexte indique que le mémo est un mémo texte (issu d'un fichier)
    WDMemoBinaire est un mot réservé

    <NomFichier> est le nom physique d'un fichier

    Par exemple :


    // Insertion du fichier C:\PHOTO\DUPONT.BMP dans un mémo binaire
    TexteRequête = "INSERT INTO CLIENT VALUES ('DUPONT', 'Jean'," + ...
    "{WDMemoBinaire('C:\PHOTO\DUPONT.BMP')})"
    SQLExec(TexteRequête, "REQ1")
    // Insertion du fichier C:\DOC\LETTRE.TXT dans un mémo texte
    TexteRequête = "INSERT INTO CLIENT VALUES ('DUPUIS', 'Christophe'," + ...
    "{WDMemoBinaire('C:\DOC\LETTRE.TXT', 'FichierTexte')})"
    SQLExec(TexteRequête, "REQ1")
    Ami calmant, J.P

  10. #10
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    ok je teste et je fais le retour

  11. #11
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    je viens de tester ça marche ! mais j'ai un autre soucis c'est que on remarque que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {WDMemoBinaire('C:\PHOTO\DUPONT.BMP')}
    On a en Rouge le chemin d'accès à l'image, donc on peut charger ce chemin dans un champ image et ensuite faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sCommande ="INSERT INTO NEW_TABLE1 ( "+...
    "MONNUM, "+...			
    "MAPHOTO )"+...			
    "VALUES ("+...
    Quote(MONNUM..Nom)+","+...
    "{WDMemoBinaire("PHOTO")})"
    Ici PHOTO est une variable paramètre, qui contient le chemin d'accès a l'image mais j'ai un message d'erreur :


    Erreur :Erreur de syntaxe sur la chaîne : peut provenir d'un caractère " à l'intérieur de la chaîne qui doit être doublé ou bien d'une erreur de syntaxe à la suite de la chaîne.
    FEN_Fiche_NEW_TABLE1.PROCEDURE.ValideLigne, Procédure locale, ligne 19, colonne 22
    ou ai je péché ?

  12. #12
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Bonjour

    Si PHOTO est une variable alors il faut mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "{WDMemoBinaire('" + PHOTO + "')})"

  13. #13
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    ok la ça marche !
    merci pour tous

  14. #14
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    Bon là j'ai pas envie d'abuser mais j'ai un autre soucis, pour la récupréation c'est ok ! j'ai reussi a insérer plus de 50.000 articles avec photos dans la base de donnée.
    maintenant il faut bien les afficher a la demande !
    Donc voici ce que j'ai fait :

    1/ table windev avec un champ de type photo pour contenir le blob
    2/ code issu du rad :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Alimentation de la table sans filtre (1000 lignes)
    SI ExecSelectTable("")=Faux ALORS
    	Sablier(Faux)
    	Ferme
    FIN
    avec un extrait de la fonction afficheligne() contenu dans la fonction ExecSelectTable()


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    PROCEDURE AfficheLigne(sNomReq=gsNomReq)	
    // Procédure appelée après chaque affichage d'enregistrement
    nNumCol est un entier
     
    // Affichage dans les champs
    nNumCol = 0
    nNumCol++; SQLAffChamp(sNomReq,"MONNUM",nNumCol,SQLTypeColonne("NEW_TABLE1","MONNUM"))
    nNumCol++; SQLAffChamp(sNomReq,"MAPHOTO",nNumCol,SQLTypeColonne("NEW_TABLE1","MAPHOTO"))
    Et là j'ai pas d'affichage de mon image. j'ai fait un tour ici http://doc.pcsoft.fr/fr-FR/browse.aw...s-wlangage,489 mais pas de solution.
    j'ai encore besion d'aide.
    Merçi a tous.

  15. #15
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 708
    Points : 956
    Points
    956
    Par défaut
    En fouinant sur le forum je crois avoir trouver la reponse :
    http://www.developpez.net/forums/d11...xte-interbase/
    Poue ceux ça interesse.
    merci a tous

  16. #16
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2020
    Messages : 3
    Points : 10
    Points
    10
    Par défaut Merci
    9 ans après vos Posts, j'ai résolu mon problème grâce à vous.

    Merci

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

Discussions similaires

  1. [MySQL] Formulaire où les champs proviennent d'une base de données
    Par Warryur dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 26/08/2012, 18h13
  2. Réponses: 4
    Dernier message: 07/06/2012, 18h28
  3. recuper les champs texte sous une autre appli (dos ou autre)
    Par marnoue dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/04/2009, 06h51
  4. Comment déterminer les champs modifiés dans une base
    Par Casual dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/06/2007, 08h33
  5. [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

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