#1 Tue 01 March 2011 16:14
- ebiseau
- Participant actif
- Date d'inscription: 6 Sep 2010
- Messages: 98
Erreur type dans l'expression... insoluble :-(
Bonjour,
j'ai écrit un mbx qui permet de localiser une adresse à partir d'une couche sig.
Mon problème se se situe à la fin de celui-ci pour la fonction "voir". Quand j'exécute le programme tout se passe bien mais il me dit que la ligne
Select * from rue_final where NUMERO=5295 comporte une erreur type dans l'expression
L'erreur ne provient pas du 5295 car la colonne numero est bien des entiers.
Là où cela devient surprenant c'est qui j'écris un mbx (que j'ai appelé test) uniquement avec cette ligne (entouré d'un sub main et d'un end sub) alors là cela fonctionne merveilleusement.
Je n'arrive vraiment pas à identifier d'où peut provenir le problème.
Je précise également que je ne souhaite pas écrire une ligne qui me renvoie vers test
sub voir
Run Application "Z:\MBX\Adresse\test.MBX"
end sub
CAR il est vrai que dans ce cas cela fonctionne.
En fait cela ne fonctionne pas dans le corps de mon mbx mais partout ailleurs :-( JE NE COMPRENDS PAS
Voici le mbx
Include "mapbasic.def"
Declare sub main
Declare sub inactif
Declare sub action
Declare sub creatable
Declare sub close_codeinsee
Declare sub nom_rue
Declare sub tableau_resultat
Declare sub dialog2
declare sub localisation
declare sub numero
declare sub dialog3
declare sub voir
dim a as integer
dim f as integer
dim tablo () as string
dim numero () as string
sub main
'demande du code insee
dialog
control statictext
title "code INSEE"
position 40, 90
id 1
control edittext
position 40, 100
id 2
width 50
calling inactif
control statictext
title "nom de la voie (sans accent)"
position 150, 90
id 3
control edittext
position 150, 100
id 4
width 150
calling inactif
control button
position 120, 130
title "valider"
id 5
calling action
width 40
control cancelbutton
title "quitter"
position 180, 130
width 50
id 6
end sub
sub inactif
if readcontrolvalue(2)="" then alter control 5 disable
end if
end sub
sub action
call close_codeinsee
dim insee as string
insee=readcontrolvalue(2)
select * from ADRESSE where CODE_INSEE=insee
'select * from ADRESSE where CODE_INSEE=insee into code_voulu
commit table selection as "Z:\MBX\Adresse\code_insee"
open table "Z:\MBX\Adresse\code_insee"
call nom_rue
end sub
sub close_codeinsee
dim n as integer
dim i as integer
dim p as integer
dim nom as string
n = Numtables()
for i=1 to n
nom = tableinfo(i, tab_info_name)
if nom = "code_insee" then
p=1
end if
next
if p=1 then
close table code_insee interactive
end if
end sub
sub nom_rue
dim rue as string
dim longrue as string
rue=readcontrolvalue(4)
longrue=len(rue)
alter table code_insee
(add VOIE_SELEC char(200))
commit table code_insee
close table code_insee
open table "Z:\MBX\Adresse\code_insee"
Update code_insee set VOIE_SELEC=right$(NOM_VOIE,longrue)
commit table code_insee
select * from code_insee where VOIE_SELEC=rue
commit table selection as "Z:\MBX\Adresse\resultat_rue"
open table "Z:\MBX\Adresse\resultat_rue"
select * from code_insee where VOIE_SELEC=rue group by NOM_VOIE
commit table selection as "Z:\MBX\Adresse\resultat_groupe"
open table "Z:\MBX\Adresse\resultat_groupe"
call tableau_resultat
end sub
sub tableau_resultat
dim nbre_ligne as integer
nbre_ligne=tableinfo(resultat_groupe,tab_info_nrows)
print nbre_ligne
redim tablo (nbre_ligne)
for a=1 to nbre_ligne
fetch rec a from resultat_groupe
tablo(a)=resultat_groupe.NOM_VOIE
next
call dialog2
end sub
sub dialog2
dialog
control statictext
position 130,100
title"veuillez confirmer votre choix"
id 7
control listbox
position 130, 20
width 60
height 30
title from variable tablo ()
value a
id 8
control button
position 120, 130
title "valider"
id 9
calling numero
width 40
control cancelbutton
title "quitter"
position 130, 130
width 50
id 10
end sub
sub numero
dim nbre_numero as integer
dim ligne_rue as integer
dim precision as integer
dim vrai_nom as string
dim b as integer
dim c as integer
fetch rec readcontrolvalue(8) from resultat_groupe
vrai_nom=resultat_groupe.NOM_VOIE
print vrai_nom
select * from resultat_rue where VOIE_SELEC=vrai_nom
commit table selection as "Z:\MBX\Adresse\rue_final"
open table "Z:\MBX\Adresse\rue_final"
nbre_numero=tableinfo(rue_final,tab_info_nrows)
print nbre_numero
redim numero (nbre_numero)
for f=1 to nbre_numero
fetch rec f from rue_final
numero(f)=rue_final.NUMERO
next
call dialog3
end sub
sub dialog3
dialog
control statictext
position 130,100
title"numero dans la voie"
id 11
control listbox
position 130, 20
width 60
height 30
title from variable numero ()
value f
id 12
control button
position 120, 130
title "valider"
id 13
'calling localisation
calling voir
width 40
control cancelbutton
title "quitter"
position 130, 130
width 50
id 14
end sub
sub voir
Select * from rue_final where NUMERO=5295
end sub
MERCI VRAIMENT POUR VOTRE AIDE
Hors ligne
#2 Tue 01 March 2011 16:19
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: Erreur type dans l'expression... insoluble :-(
Bonjour,
Il serrait préférable qu'à l'avenir tu ajoutes ton code dans une boite déroulante de code.
As-tu essayé d'ajouter ta sélection dans une table (into selection)
Code:
sub voir Select * from rue_final where NUMERO=5295 into selection end sub
De plus, tu as une sub qui s'appelle numéro, ton champ s'appelle numéro et une variable numero. Je ne crois pas que ça cause problème mais j'éviterais cela.
JF
Dernière modification par jean94 (Tue 01 March 2011 16:25)
Hors ligne
#3 Tue 01 March 2011 16:51
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Erreur type dans l'expression... insoluble :-(
Salut,
Et comme ceci -->
Code:
Dim cmd as string cmd="Select * from rue_final where NUMERO=5295 into selection" run command cmd
A+
Joël
Hors ligne
#4 Tue 01 March 2011 17:19
- ebiseau
- Participant actif
- Date d'inscription: 6 Sep 2010
- Messages: 98
Re: Erreur type dans l'expression... insoluble :-(
Merci :-) en fait le problème est bien cette multiplication de "numero" qui cause soucis
Merci de m'avoir éclairé
Hors ligne