#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 = name2je 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


