Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > WinDev > Windev Mobile
Windev Mobile Forum d'entraide sur la programmation Windev Mobile (Pocket PC, SmartPhone,...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/01/2013, 14h36   #1
thamis
Invité régulier
 
Inscription : février 2003
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 12
Points : 6
Points : 6
Par défaut Récupérer la sélection d'une ligne d'une liste remplie par programmation

Bonjour,

Version : Windev Mobile 17
Plateforme : Android

Mon problème
Je souhaite récupérer la valeur d'une ligne sélectionnée dans une liste remplie par programmation.

Explications
Dans une fenêtre principale (Catégories), j'ai une liste (Liste_Cat) remplie par un fichier requête (affiche toutes les catégories) avec mémorisation sur la rubrique ID. A la sélection d'une ligne de cette liste, j'ouvre une autre fenêtre (Sous-Catégories) qui m'affiche les Sous-Catégories selon l'ID de la catégorie mémorisée.

Jusque là tout va bien.

Maintenant je voudrais ouvrir une autre fenêtre (Questions), qui affichera toutes les questions liées à la sous-catégories sélectionnée. Ce qui me pose problème, c'est que je ne sais pas comment mémoriser l'ID de la sous-catégorie (la sous-catégorie a aussi un champ ID) qui a été sélectionnée, car cette liste a été remplie par programmation, ce n'est pas comme pour une liste remplie par Fichier/Requete où l'on déclare la rubrique mémorisée.

Si vous avez des pistes je suis preneur.

S'il vous manque des infos pour la compréhension dîtes le moi.

Merci.
Thamis
thamis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 14h57   #2
djejackk
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 158
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 158
Points : 445
Points : 445
Bonjour,

Vous pouvez utiliser la fonction gLien (elle semble être disponible sous Android).
(voir la doc : http://doc.pcsoft.fr/fr-FR/?3029043)

Dans la description de la liste, il faut cocher "retourne la valeur spécifiée avec la fonction gLien" (dans l'onglet "Détail").
Et dans le ListeAjoute, vous ajouter la fonction gLien avec l'ID en paramètre.

Code :
1
2
3
ListeAjoute(LISTE_MaListe, "Catégorie 1" + gLien(ID1))
ListeAjoute(LISTE_MaListe, "Catégorie 2" + gLien(ID2))
De cette façon, l'appel au champ liste renverra ce qui est spécifié par gLien.
djejackk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 11h45   #3
thamis
Invité régulier
 
Inscription : février 2003
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 12
Points : 6
Points : 6
Merci djejackk,

C'est sympa d'avoir répondu si vite. Ta réponse m'a mis un peu sur le bon chemin, mais comme souvent la réadaptation est moins limpide.

Tu me donnes comme code exemple :
Code :
ListeAjoute(LISTE_MaListe, "Catégorie 1" + gLien(ID1))
Si je retranscrits par rapport à mon projet, ça donne la ligne du dessous, sachant que le remplissage de la liste est fait par une requête Code SQL executée à l'initialisation de la fenêtre par la commande HExécuteRequête

Code :
ListeAjoute(LISTE_SsCat,REQ_SsCat.name + gLien(REQ_SsCat.id))
Je ne sais pas si c'est possible de mettre en glien ce que j'ai mis. En tout cas si c'est possible je ne sais pas comment appeler ce qui est mémorisé dans le gLien pour pouvoir l'utiliser comme paramètre dans la requête pour récupérer les questions.

Thamis
thamis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 13h54   #4
djejackk
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 158
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 158
Points : 445
Points : 445
Je ne suis pas sûr d'avoir compris au final.

Le champ LISTE_SsCat est remplie par programmation ou est basé sur une requête ?
Vous semblez utiliser une requête ("REQ_SsCat") pour la liste "LISTE_SsCat".
Pourquoi passer par programmation ?

Vous pouvez très bien indiquer directement que la liste "LISTE_SsCat" est basé sur la requête "REQ_SsCat".
Ensuite, pour la mettre à jour en fonction du choix dans la liste principale, il suffit d'utiliser ListeAffiche.

Code :
1
2
3
4
5
6
7
8
-- Code de sélection d'une ligne de la liste principale

// Définit le paramètre de la requête des sous-catégories
REQ_SsCat.pIDCatégorie = LISTE_Cat

// Actualise la liste des sous-catégories
ListeAffiche(LISTE_SsCat, taRéExécuteRequête)
Pour répondre au gLien, il suffit d'appeler directement le champ, exactement comme pour une valeur mémorisée sur une liste fichier. Si je reprends mon exemple :

Code :
1
2
3
4
5
6
7
ListeAjoute(LISTE_MaListe, "Catégorie 1" + gLien(ID1))
ListeAjoute(LISTE_MaListe, "Catégorie 2" + gLien(ID2))

...

Info(LISTE_MaListe) // La boite d'info affichera la valeur de ID1 ou de ID2 selon la sélection
J'espère avoir été clair.
djejackk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 15h47   #5
thamis
Invité régulier
 
Inscription : février 2003
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 12
Points : 6
Points : 6
Allez je reprends depuis le début pour être le plus clair possible

J'ai une table s_kb_category, dans laquelle j'ai trois champs id, parent_id et name. Le champ id est incrémental, parent_id permet une classification sous forme de sous-catégories.
  • Les parent_id des catégories ont pour valeur 0
  • Les parent_id des sous-catégories ont pour valeur l'id de leur catégorie

Une fenêtre FEN_Categories avec un champ List_Categories qui est alimentée par une requête basée sur s_kb_category, requête crée par l'assistant de requête. Je mémorise la rubrique ID de ce champ liste.

Cette requête me renvoie toutes les catégories dans ma liste. Dans le code Sélection d'une ligne List_Categories, je mémorise dans une variable (sParamid ) l'ID de la catégorie sélectionnée, puis j'ouvre une fenêtre FEN_SsCategories, ce qui me permet de réutiliser sParamid dans ma FEN_SsCategories.

Dans ma FEN_SsCategories, j'ai une liste List_SsCategories qui doit m'afficher toutes les sous-catégories de la catégorie sélectionnée précédemment.
Pour ce faire j'ai crée une requête en code SQL cette fois ci, qui utilise le paramètre sParamid.

La requête :
Code :
SELECT s_kb_category.id AS id, s_kb_category.parent_id AS parent_id, s_kb_category.name AS name FROM  s_kb_category WHERE  s_kb_category.parent_id <>0 AND s_kb_category.parent_id = {sParamid}
Jusque là c'est tout bon, j'ai bien mes Sous-categories. Mais c'est à la dernière étape que je coince.

Lorsque je vais sélectionner une ligne de la liste List_SsCategories, je souhaite ouvrir une fenêtre FEN_Questions avec un champ List_Questions, qui va contenir toutes les questions en rapport avec cette sous-catégorie. Cela implique que je puisse mémoriser dans une variable sSsCatid l'ID de la sous-catégorie sélectionnée pour l'utiliser dans la requête qui va alimenter ma liste List_Questions.

Je pense que la bonne route à prendre est celle de gLien, mais pour le moment je ne maîtrise pas cette fonctionnalité.

Avant de me lancer dans la dernière étape, je fais juste une vérification par :
sur Sélection d'une ligne de List_SsCategories pour être sûr que je récupère bien la bonne valeur.

J'espère avoir apporté plus de clarté sur mon besoin.

Thamis
thamis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 17h03   #6
thamis
Invité régulier
 
Inscription : février 2003
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 12
Points : 6
Points : 6
Bien en fait c'était très simple, en écrivant le déroulé et en lisant tranquillement l'aide de la fonction gLien et de Valeur mémorisée, j'ai trouvé qu'il faut simplement pour mon exemple, coder de cette façon :

Code :
1
2
3
4
// Mise en variable de la valeur mémorisée par gLien
sSscatid = LISTE_SsCat..ValeurMémorisée
// Affichage de la valeur de la variable
Info(sSscatid)
Si je veux passer la variable à ma fenêtre FEN_Questions, il me suffit d'ajouter :
Code :
OuvreFille(FEN_Questions)
Merci djejackk de l'aide indirect que vous m'avez apporté, vous m'avez mis sur la voie. Je vais prendre le temps aussi d'étudier la solution avec Listeaffiche et taRéExécuteRequête qui me semble bien plus optimisé que la mienne. Je débute alors je voudrais aller au bout de mon projet et ensuite travailler sur l'optimisation du produit fini.
thamis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h27.


 
 
 
 
Partenaires

Hébergement Web