Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 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

 

Pied de page des forums

Powered by FluxBB