banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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" sad

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

Cedricc a écrit:

...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

Cedricc a écrit:

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

 

Pied de page des forums

Powered by FluxBB