PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → SQL Rubrique image dans un champs image
SQL Rubrique image dans un champs image
Débuté par Stéphane Desanlis, 29 aoû. 2012 17:33 - 7 réponses
Posté le 29 août 2012 - 17:33
Bonjour à tous,
J'ai un petit problème :
J'ai une base de données en Server SQL (Navision) et des images stockées directement dans une rubrique image. Je voudrais simplement savoir comment faire pour afficher cette image (0x01447C5A15A87D...) dans un champs image.
Voici le bout de code :

reqtxt est une chaîne
reqsql est une Source de Données

reqtxt = [
select
No_,
Picture
from
ARTICLE
WHERE No_ = '141475'
]

SI PAS SQLExec(reqtxt,reqsql) ALORS
SQLInfoGene()
Erreur("Numéro erreur : "+SQL.Erreur,SQL.MesErreur)
SQLFerme(reqsql)
RETOUR
SINON
SQLPremier(reqsql)
SI PAS SQL.EnDehors
img = //C'est ici qu'il me manque le bout de code, SQLCol(reqsql,2) ne fonctionne pas arrrfff.

FIN
SQLFerme(reqsql)
FIN

Je vous remercie d'avance de votre aide.
Membre enregistré
511 messages
Popularité : +18 (18 votes)
Posté le 29 août 2012 - 19:50
Bonjour Stéphane,


D'après l'aide en ligne, la fonction SQLLitMémo() pourrait t'être utile.
(le nom de la fonction en anglais SQLGetMemo()).
» http://doc.pcsoft.fr/fr-fr/?3072020


Mais son utilisation impliquerait de parcourir le jeu de données avec les fonctions SQLAvance() et SQLLitCol().
(et en anglais SQLFetch() et SQLGetCol())

Cf. Les différents types de parcours disponibles en SQL
» http://doc.pcsoft.fr/fr-fr/?3072025&name=les-differents-types-parcours-disponibles-sql
Posté le 30 août 2012 - 12:40
Salut JBO et merci de ton aide, je viens de tester avec :
reqtxt est une chaîne

reqtxt = [
select
No_,
Picture
from
SIREGE$Item
WHERE No_ = '141475'
]

i est un entier = 0
SQLExec(reqtxt,"REQ1")
// Récupérer la requête ligne à ligne
TANTQUE SQLFetch("REQ1") = 0
i++
img..Valeur = SQLLitMémo("REQ1", 2)
ou
img = SQLLitMémo("REQ1", 2)

FIN
SQLFerme("REQ1")

Et bien cela ne fonctionne pas... J'ai oublié quelque chose ???
Je ne comprend pas pourquoi cela ne fonctionne pas...
Si quelqu'un a une réponse à me fournir...

Merci d'avance
Membre enregistré
511 messages
Popularité : +18 (18 votes)
Posté le 30 août 2012 - 16:08
Bonjour Stéphane,

Peut-être pourrais-tu aller jusqu'au bout de l'exemple, en utilisant la fonction HExtraitMémo() ?
Posté le 30 août 2012 - 17:06
Tu as raison je n'ai pas été jusqu'au bout donc voici avec le nouveau bout de code :
i est un entier = 0
SQLExec(reqtxt,"REQ1")
// Récupérer la requête ligne à ligne
TANTQUE SQLFetch("REQ1") = 0
// Il y a encore une ligne
i++
// Récupérer les données
HExtraitMémo(SQLLitMémo("REQ1", 2),"D:\RECUP_ARTICLE\images\img01.bmp")
FIN
SQLFerme("REQ1")

Et cela ne fonctionne toujours... Quel mystère...
Membre enregistré
511 messages
Popularité : +18 (18 votes)
Posté le 30 août 2012 - 17:16
Stepahne Desanlis a écrit dans le message de news <bf7339f4069675a14f1f7dc6816bc939@news.pcsoft> :

// Récupérer les données
HExtraitMémo(SQLLitMémo("REQ1", 2),"D:\RECUP_ARTICLE\images\img01.bmp")

Et cela ne fonctionne toujours... Quel mystère...


Que contient le fichier img01.bmp ?
Peux-tu le comparer avec les données de l'image d'origine ?
Posté le 30 août 2012 - 17:47
Il me créé bien mon image, elle fait 43 ko mais l'image est blanche rien dedans.
Je ne peux pas comparait l'image d'origine avec celle généré mais je peux la voir dans leurs logiciel NAVISION.
Par contre je viens d'essayer de faire cela pour avoir une image source de référence mais cela plante...
reqtxt = [
update ARTICLE
set Picture = {WDMemoBinaire('D:\RECUP_ARTICLE\images\origine.jpg')}
WHERE No_ = '141475'
]

SI PAS SQLExec(reqtxt,reqsql) ALORS
SQLInfoGene()
Erreur("Numéro erreur : "+SQL.Erreur,SQL.MesErreur)
SQLFerme(reqsql)
RETOUR
SINON
Info("Update OK")
SQLFerme(reqsql)
FIN
Posté le 08 juillet 2020 - 15:30
Bonjour,

Avez vous trouvez une solution à ce problème?
car j'ai le même et j'arrive pas à faire afficher l'image.

Merci