PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 26 → Liée une image à un hfsql et l'afficher
Liée une image à un hfsql et l'afficher
Débuté par SubesseDEV, 14 juin 2021 14:16 - 13 réponses
Membre enregistré
21 messages
Posté le 14 juin 2021 - 14:16
Bonjour, j'ai une fenêtre avec un champ table qui affiche une liste de plantes lors de la selection d'une ligne une nouvelle fenetre s'ouvre avec les infos de la plantes sélectionner.

les infos sont stockées dans un hfsql classic et le champ table et remplie via ce meme HFSQL

j'aimerais afficher une image de la plantes ors je ne sais pas comment faire.

j'ai essayer dchargeimage() mais lors du test via SDK ça marche mais a la compilation en apk sur un android l'image ne s'affiche pas.

ma question est comment sauvegarder une images et les liee a mes enregistrement HFSQL afin que selon la plantes sélectionnée l'image correspondante s'affiche
Membre enregistré
1 607 messages
Posté le 14 juin 2021 - 17:59
Sur mobile une simple affectation suffit (=)
N'utilisez pas dchargeimage
Il n'est pas non plus nécessaire de les mettre en dehors de la base de données
Membre enregistré
21 messages
Posté le 15 juin 2021 - 08:57
bonjour, merci de votre réponse
vous aurez un exemple de code si par exemple dans mon répertoire de projet j'ai tomates.PNG et une table de données avec un ID un nom une race et une champ image dans une fenêtre ?

Dois-je creer dans ma table de données hfsql une colonne de type (image,son,binaire) et là mettre cette attribution ou autres ?

merci de l'aide apportée.
Membre enregistré
1 607 messages
Posté le 15 juin 2021 - 10:03
Alors , si tu met ton tomate.png dans une rubrique mémo binaire
Tu ne sauras plus ni le nom de l'image ni son extension
Si tu as besoin de les connaître il faut alors enregistrer cette information dans une rubrique.
Donc au lieu d'écrire

monImage est une Image = dChargeImage(sPhoto)
Il faut écrire
monImage est une Image = sPhoto

sPhoto est alors
soit égale à tomate.png avec son chemin complet sur l'appareil
soit égale Image.rubimage donc le nom de ta table base de données et ta rubrique

Pareil si tu as un champ image
C'est écrit dans l'aide
Pour afficher un fichier image dans un champ Image, une simple affectation suffit.
Voir https://doc.pcsoft.fr/?1013136
Membre enregistré
21 messages
Posté le 15 juin 2021 - 14:33
D'accord, j'ai mis mon image dans un HFSQL rubrique memo
j'utilise une requete pour recuperer l'image avec comme clée l'id de ma plante et je fait un Champ_image=reqdonneimage.monimage sur test par windows mobile aucun soucis mais lors de la compilation par APK cela ne fonctionne pas :'(

HExécuteRequête(REQ_donneLiens,hRequêteDéfaut,gnSidselecplante)
IMG_SansNom1=REQ_donneLiens.IMAGE_P


SELECT
IMAGES.IMAGE_P AS IMAGE_P
FROM
IMAGES
WHERE
IMAGES.IDIM_P={param1}
Membre enregistré
1 607 messages
Posté le 15 juin 2021 - 19:00
Je comprends pas trop.
Au début, tu parles d'un champ table qui contient la liste des plantes
Quand tu clique sur une ligne de la table
Tu récupères un identifiant
Alors tu ouvre une fenêtre qui affiche la fiche de la plante
Pourquoi, tu passes par une requête puisque tu as directement l'identifiant.
N'as tu pas une liaison dans ton analyse entre la table image et la table des plantes ?
De toutes façons, même avec une requête, cela devrait fonctionner.
Je vais vérifier dans un de mes projets avec requête image et je reviens vers toi.
Posté le 15 juin 2021 - 20:49
Popoy a écrit :
Alors , si tu met ton tomate.png dans une rubrique mémo binaire
Tu ne sauras plus ni le nom de l'image ni son extension


non non... hinfomemo est la pour ca
https://doc.pcsoft.fr/fr-FR/?3044008
Membre enregistré
1 607 messages
Posté le 16 juin 2021 - 03:16
Argus, j'ai constaté que hinfomemo ne fonctionne pas toujours
Surtout si on n'a pas utiliser HAttacheMémo
Bien sûr, il est possible de récupérer l'extension grâce à l'analyse des premiers octets
Mais le plus simple est d'enregistrer l'information
C'est juste une suggestion, pas une obligation.
Membre enregistré
1 607 messages
Posté le 16 juin 2021 - 04:31
Salut j'ai 1 fenetre avec des images dans des zones répétées
Je n'utilise pas les champs table

Dans cette fenêtre REQ_Pays ne contient pas d'image
J'utilise Affichage d'une ligne de ZR pour afficher l'image
//Fin d'initialisation de ma fenêtre
ZoneRépétéeSupprimeTout(ZR_Pays)
SI HExécuteRequête(REQ_Pays) ALORS
POUR TOUT REQ_Pays
ZoneRépétéeAjouteLigne(ZR_Pays,REQ_Pays.Pays,REQ_Pays.country_code)
FIN
FIN

//fermeture de ma fenêtre
// Libère les ressources des requêtes de la mémoire
HLibèreRequête(REQ_Pays)

//Affichage d'une ligne de ZR_Pays
//recherche de l'image
HLitRecherchePremier(Drapeaux,Id_Drapeau,ATT_AttSousLibellé)
ATT_AttVignette = Drapeaux.Drapeau

voila, si ça peut aider
Membre enregistré
21 messages
Posté le 16 juin 2021 - 11:14
Bonjour, merci a tous pour vos réponses :)
j'ai optée pour sauvegarder via mon champ table l'image sélectionner dans une variable de type image, puis au chargement de la page d'aprés je met :
variable image est une image
mon_champ_image=variableimage

mais c'est à la compilation que j'ai une erreur maintenant
Membre enregistré
21 messages
Posté le 16 juin 2021 - 11:16
Erreur retournée :
:compileDebugJavaWithJavacC:\Users\mmmmm\Desktop\Connected greenhouse\Projet plateforme\ProjetFusion\Android\Gen\src\com\masociete\ConnectedGreenhouse\wdgen\GWDFFEN_PLANTES.java:761: error: cannot find symbol
class GWDCOL_IMAGE_P extends WDColonneImage
                             ^
  symbol:   class WDColonneImage
  location: class GWDFFEN_PLANTES.GWDTABLE_PLANTES
C:\Users\mmmmm\Desktop\Connected greenhouse\Projet plateforme\ProjetFusion\Android\Gen\src\com\masociete\ConnectedGreenhouse\wdgen\GWDFFEN_PLANTES.java:803: error: cannot find symbol
super.setAjustable(true);
     ^
  symbol: method setAjustable(boolean)
C:\Users\mmmmm\Desktop\Connected greenhouse\Projet plateforme\ProjetFusion\Android\Gen\src\com\masociete\ConnectedGreenhouse\wdgen\GWDFFEN_PLANTES.java:805: error: cannot find symbol
super.setAvecRecherche(false);
     ^
  symbol: method setAvecRecherche(boolean)
C:\Users\mmmmm\Desktop\Connected greenhouse\Projet plateforme\ProjetFusion\Android\Gen\src\com\masociete\ConnectedGreenhouse\wdgen\GWDFFEN_PLANTES.java:807: error: cannot find symbol
super.setDessinBandeauSelection(true);
     ^
  symbol: method setDessinBandeauSelection(boolean)
C:\Users\mmmmm\Desktop\Connected greenhouse\Projet plateforme\ProjetFusion\Android\Gen\src\com\masociete\ConnectedGreenhouse\wdgen\GWDFFEN_PLANTES.java:815: error: cannot find symbol
super.setTransparence(1);
     ^
  symbol: method setTransparence(int)
C:\Users\mmmmm\Desktop\Connected greenhouse\Projet plateforme\ProjetFusion\Android\Gen\src\com\masociete\ConnectedGreenhouse\wdgen\GWDFFEN_PLANTES.java:817: error: cannot find symbol
super.setPositionImage(2097162);
     ^
  symbol: method setPositionImage(int)
C:\Users\mmmm\Desktop\Connected greenhouse\Projet plateforme\ProjetFusion\Android\Gen\src\com\masociete\ConnectedGreenhouse\wdgen\GWDFFEN_PLANTES.java:819: error: cannot find symbol
super.setSymetrie(0);
     ^
  symbol: method setSymetrie(int)
C:\Users\mmmmmm\Desktop\Connected greenhouse\Projet plateforme\ProjetFusion\Android\Gen\src\com\masociete\ConnectedGreenhouse\wdgen\GWDFFEN_PLANTES.java:821: error: cannot find symbol
super.setMargeImage(0);
     ^
  symbol: method setMargeImage(int)
C:\Users\mmmmm\Desktop\Connected greenhouse\Projet plateforme\ProjetFusion\Android\Gen\src\com\masociete\ConnectedGreenhouse\wdgen\GWDFFEN_PLANTES.java:847: error: incompatible types: GWDFFEN_PLANTES.GWDTABLE_PLANTES.GWDCOL_IMAGE_P cannot be converted to a
super.ajouterColonne("COL_IMAGE_P",mWD_COL_IMAGE_P);
                                   ^
C:\Users\mmmmmm\Desktop\Connected greenhouse\Projet plateforme\ProjetFusion\Android\Gen\src\com\masociete\ConnectedGreenhouse\wdgen\GWDFFEN_PLANTES.java:974: error: cannot find symbol
GWDPProjetTestBdD2.getInstance().vWD_gImageplante.setValeur(mWD_COL_IMAGE_P.get(WDAPITable.tableSelect(this)));
                                                                           ^
  symbol:   method get(WDEntier4)
  location: variable mWD_COL_IMAGE_P of type GWDFFEN_PLANTES.GWDTABLE_PLANTES.GWDCOL_IMAGE_P
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
10 errors
 FAILED


cela viens de mon image dans la rubrique ?
Membre enregistré
1 607 messages
Posté le 16 juin 2021 - 12:59
Vide tes fichiers temporaires et réessaye
Posté le 16 juin 2021 - 15:07
Popoy a écrit :
Argus, j'ai constaté que hinfomemo ne fonctionne pas toujours
Surtout si on n'a pas utiliser HAttacheMémo


Ca n'est pas qu'il ne fonctionne pas toujours, il fonctionne très bien...

C'est qu'il faut lire la doc pour savoir l'utiliser correctement... Je cite l'aide en ligne:

hinfomemo retourne le Nom Nom du fichier d'origine tel qu'il a été donné dans la fonction HAttacheMémo.

...

et
Si le mémo est un mémo binaire qui n'a pas été affecté par les fonctions HAttacheMémo ou BinaireCharge, le nom, la date, l'heure et l'information ne sont pas renseignées.

Donc, hinfomemo fonctionne parfaitement tel qu'il est prévu qu'il fonctionne, et quand on charge des fichiers images externe havec hattachememo, aucun problème

Ta solution est nécessaire uniquement quand on enregistre des mémos binaires qui ne viennent pas d'un fichier.

Dans le cas standard, c'est juste du boulot en plus.
Membre enregistré
21 messages
Posté le 18 juin 2021 - 14:29
Bonjours a tous !

j'ai refait mon projet recrée ma table et a la compilation pas de soucis avec le memo ça a bien marchée merci a vous j'ai pu grandement avancée dans mon projet, maintenant je doit trouver comment me connecter a ma base MYSQL :(