#1 Mon 04 October 2010 15:29
- Cedricc
- Participant actif
- Date d'inscription: 22 Apr 2010
- Messages: 105
Récupération de donnée dans une listbox
Bonjour à tous,
j'ai créer une listbox où l'utilisateur choisi une donnée qui mettra à jour une table, mais il me retourne le numéro sélectioné dans la listbox et pas la donnée. Quelqu'un pourrait-il m'aider, voici le code :
prop_var=""
dialog
title "choix du compte"
position 550,300
height 100
width 150
control listbox
value i into prop_var
position 10,10
width 120
height 60
id 1
title from variable liste_prop
control cancelbutton
control okbutton
redim liste_exp(tableinfo (exploitants,tab_info_nrows))
fetch first from exploitants
for i=1 to tableinfo (exploitants,tab_info_nrows)
liste_exp(i)=exploitants.NO_EXPLOITANT + " / " + exploitants.NOM_EXPLOITANT
fetch next from exploitants
next
exp_var=""
dialog
title "choix de l'exploitant"
position 550,300
height 100
width 150
control listbox
position 10,10
width 120
height 60
id 2
title from variable liste_exp
value exp_var into exp_var
control cancelbutton
control okbutton
chemin = TableInfo(ATTRIBUTION, TAB_INFO_nrows)
select * from ATTRIBUTION where rowid = chemin into selection
Update selection Set nom = prop_var
Update selection Set nom_exp = exp_var
Hors ligne
#2 Mon 04 October 2010 15:53
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: Récupération de donnée dans une listbox
Bonjour
C'est normal, un listbox renvoit toujours un Integer...
Il faut donc que tu récupère le "x" ième élément de la ta "liste_prop" qui n'est pas déterminet dans cet exemple la
JF
Dernière modification par jean94 (Mon 04 October 2010 15:54)
Hors ligne
#3 Mon 04 October 2010 16:07
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Récupération de donnée dans une listbox
Bonjour
Créez une sub dédiée à l'exploitation des choix faits dans les ListBox, avec par exemple exp_choisi=liste_exp(exp_var) et Update selection Set nom_exp = exp_choisi....ou l'utilisation de ReadControlValue(2).
Voir les exemples et l'ensemble du texte de ce document...
Hors ligne
#4 Mon 04 October 2010 23:42
- Cedricc
- Participant actif
- Date d'inscription: 22 Apr 2010
- Messages: 105
Re: Récupération de donnée dans une listbox
Merci pour réponses, j'ai modifié mon code mais maintenant j'ai un message d'erreur lors de l'éxécution sur MI : "valeur hors limite"
Code:
Include "Mapbasic.def" Include "Menu.def" Include "icons.def" Declare sub main Declare sub majname Declare sub choix1 Declare sub choix2 Declare sub dessin declare sub majpoints global liste_exp() as string global liste_prop() as string dim i as smallint dim chemin as integer dim name1 as string dim name2 as string dim nt as integer dim sel_var as integer dim prop_var as integer dim exp_var as integer Sub main create buttonpad "Calcul du projet" as pushbutton icon 149 helpmsg "\nCalcul du projet" calling dessin width 100 position (12,3) end sub -------------------------------------------------- sub dessin sel_var="" sel_var=selectioninfo(sel_info_nrows) if sel_var=0 then note "Aucune parcelle attribution sélectionnée" exit sub else end if dialog title "VALIDATION" height 30 position 600,400 control cancelbutton control okbutton calling choix1 end sub -------------------------------------------------- Sub choix1 Commit Table ATTRIBUTION Interactive Pack table ATTRIBUTION data add map layer ATTRIBUTION Set Map Layer 1 Display Graphic Zoom (0, 100000) Units "m" Off Editable On Selectable On Global Line (1,2,0) Global Pen (1,2,0) Global Brush (2,16777215,16777215) Global Symbol (35,0,12) Global Font ("Arial",0,9,0) Label Line None Position Center Font ("Arial",0,9,0) Pen (1,2,0) With nom Parallel On Auto Off Overlap Off PartialSegments Off Duplicates On Offset 2 Max Visibility On Nodes Off Arrows Off Centroids Off set map redraw on redim liste_prop(tableinfo (prop,tab_info_nrows)) fetch first from prop for i=1 to tableinfo (prop,tab_info_nrows) liste_prop(i)=prop.NO_COMPTE + " / " + prop.nomprop fetch next from prop next prop_var="" dialog title "choix du compte" position 550,300 height 100 width 150 control listbox position 10,10 width 120 height 60 id 1 title from variable liste_prop value i into prop_var control cancelbutton control okbutton calling choix2 end sub --------------------------------------------------------------------------- Sub choix2 Commit Table ATTRIBUTION Interactive Pack table ATTRIBUTION data add map layer ATTRIBUTION Set Map Layer 1 Display Graphic Zoom (0, 100000) Units "m" Off Editable On Selectable On Global Line (1,2,0) Global Pen (1,2,0) Global Brush (2,16777215,16777215) Global Symbol (35,0,12) Global Font ("Arial",0,9,0) Label Line None Position Center Font ("Arial",0,9,0) Pen (1,2,0) With nom Parallel On Auto Off Overlap Off PartialSegments Off Duplicates On Offset 2 Max Visibility On Nodes Off Arrows Off Centroids Off set map redraw on redim liste_exp(tableinfo (exploitants,tab_info_nrows)) fetch first from exploitants for i=1 to tableinfo (exploitants,tab_info_nrows) liste_exp(i)=exploitants.NO_COMPTE + " / " + exploitants.NOM_EXPLOITANT fetch next from exploitants next exp_var="" dialog title "choix de l'exploitant" position 550,300 height 100 width 150 control listbox position 10,10 width 120 height 60 id 2 title from variable liste_exp value i into exp_var control cancelbutton control okbutton calling majname end sub --------------------------------------------------------------------------- sub majname chemin = TableInfo(ATTRIBUTION, TAB_INFO_nrows) select * from ATTRIBUTION where rowid = chemin into selection name1=liste_prop(prop_var) Update selection Set nom = name1 name2=liste_exp (exp_var) Update selection Set exploitant = name2
je n'arrive pas à récuperer le libellé correspondant au numéro de l'enregistrement...
Hors ligne
#5 Tue 05 October 2010 09:54
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Récupération de donnée dans une listbox
...j'ai un message d'erreur lors de l'éxécution sur MI : "valeur hors limite" ...
Le message est sûrement plus complet: il indique aussi à quelle ligne l'erreur se produit...et ça nous serait bien utile de le savoir !!
Hors ligne
#6 Tue 05 October 2010 13:02
- Cedricc
- Participant actif
- Date d'inscription: 22 Apr 2010
- Messages: 105
Re: Récupération de donnée dans une listbox
Il me met ce message au niveau de ligne 131 soit :
Code:
name1=liste_prop(prop_var)
Hors ligne
#7 Tue 05 October 2010 13:31
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Récupération de donnée dans une listbox
Quelques pistes:
- évitez les lignes telles que exp_var="": ces variables sont en Integer, pas en String donc pour les initialiser exp_var=0
- introduisez print prop_var et print exp_var pour vérifier les valeurs, ainsi que print name1 et print name2
Hors ligne
#8 Wed 06 October 2010 08:24
- Franck2908
- Participant actif
- Date d'inscription: 5 Mar 2010
- Messages: 85
Re: Récupération de donnée dans une listbox
Il me met ce message au niveau de ligne 131 soit :
Code:
name1=liste_prop(prop_var)
Bonjour,
essai de changer ta déclaration de "prop_var" : passe de "dim prop_var as integer" à "dim prop_var as long"
Hors ligne
#9 Wed 06 October 2010 09:26
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Récupération de donnée dans une listbox
Bonjour Franck2908
Le type de variable "long" n'existe pas en MapBasic/MapInfo...
Si "Integer" pose problème, ce que je ne crois pas, c'est en SmallInt qu'il faut le changer
Hors ligne
#10 Wed 06 October 2010 11:14
- Cedricc
- Participant actif
- Date d'inscription: 22 Apr 2010
- Messages: 105
Re: Récupération de donnée dans une listbox
Bon j'ai essayer de modifier mon code avec les conseils de Maurice mais j'ai toujours le même problème, je ne comprend pas du tout ce qui bloque...si quelqu'un a une idée...
Hors ligne
#11 Wed 06 October 2010 11:54
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Récupération de donnée dans une listbox
Bonjour
Comme on ne peut pas faire "tourner" votre programme qui fait appel à des tables spécifiques...donnez nous au moins le résultat qu'obtiennent les print prop_var, print exp_var, print name1 et print name2...
S'ils sont à zéro c'est qu'il faut utiliser des ReadControlValue(x)...
Hors ligne
#12 Wed 06 October 2010 11:57
- Cedricc
- Participant actif
- Date d'inscription: 22 Apr 2010
- Messages: 105
Re: Récupération de donnée dans une listbox
Mes print me donne bien la valeur "0" je vais donc essayer de repasser par les readcontrolvalue, je vous tiens au courant.
Hors ligne