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é ?

#1 Fri 05 August 2011 09:07

ebiseau
Participant actif
Date d'inscription: 6 Sep 2010
Messages: 98

probleme sql map basic

Bonjour,

j'ai écrit cette sélection sql dans mon mbx :

Select Travail.NOM, Travail.NUMERO, Travail.MO_COLL from Travail, nom where Travail.MO_coll = nom.MO_coll into Selection

et lors de la compilation j'ai le message d'erreur comme quoi la virgule n'est pas reconnue

Pourquoi, pourtant je ne vois pas de faute à mon écriture

Merci vraiment

Hors ligne

 

#2 Fri 05 August 2011 09:50

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: probleme sql map basic

Salut,

As tu procédé comme ceci:

Code:

Dim cmd as string

cmd="Select Travail.NOM, Travail.NUMERO, Travail.MO_COLL from Travail, nom where Travail.MO_coll = nom.MO_coll into Selection"

Run command cmd

Tu peux placer aussi un --> Print cmd avant le run pour vérifier ta requête
A+
Joël

Dernière modification par Spacejo (Fri 05 August 2011 09:54)

Hors ligne

 

#3 Fri 05 August 2011 10:01

ebiseau
Participant actif
Date d'inscription: 6 Sep 2010
Messages: 98

Re: probleme sql map basic

merci de prendre du temps pour moi,

en fait je crois que le problème vient du fait que la table nom est une variable (un readcontrolvalue) donc peut être remplacer nom par "+chr$(34)+nom+chr$(34)+" Certes cela ne marche pas non plus mais c'est un piste.

Help help :-(

Hors ligne

 

#4 Fri 05 August 2011 10:12

ebiseau
Participant actif
Date d'inscription: 6 Sep 2010
Messages: 98

Re: probleme sql map basic

j'ai utilisé commande comme ceci :
Dim cmd as string

cmd="Select Travail.nom, Travail.NUMERO, Travail.MO_COLL from Travail, "+chr$(34)+nom+chr$(34)+" where Travail.MO_coll = "+chr$(34)+nom+chr$(34)+".MO_coll into "+chr$(34)+nom+chr$(34)+"2"
Run command cmd

ça passe à la compilation mais à l'exécution il me dit qu'il n'y a pas de jointure possible entre les 2 tables, que la clause where est défaillante. Pourtant quand je fais le sql directement depuis map info il n'y a pas de soucis.
Cela vient sans aucun doute de ma table nom qui est un readcontrolvalue mais comment faire fonctionner ce sql ?

Merci vraiment

Hors ligne

 

#5 Fri 05 August 2011 10:22

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: probleme sql map basic

Hors ligne

 

#6 Fri 05 August 2011 10:24

ebiseau
Participant actif
Date d'inscription: 6 Sep 2010
Messages: 98

Re: probleme sql map basic

j'ai réécris comme cela :
Dim cmd as string

cmd="Select Travail.nom, Travail.NUMERO, Travail.MO_COLL from Travail, "+chr$(34)+chr$(37)+nom+chr$(37)+chr$(34)+" where Travail.MO_coll = "+chr$(34)+chr$(37)+nom+chr$(37)+chr$(34)+".MO_coll into aigalier2"

Run command cmd

Là ça passe à la compilation et à l'exécution il me dit que le résultat de l'expression n'est pas une table ou une colonne, qu'est ce qui cloche ?

Hors ligne

 

#7 Fri 05 August 2011 10:30

ebiseau
Participant actif
Date d'inscription: 6 Sep 2010
Messages: 98

Re: probleme sql map basic

je suis pas loin du vrai mais je ne vois sur quelle partie de ma ligne de cmd porte le message "le résultat de l'expression n'est pas une table ou une colonne"

Par contre j'utilise chr$(34) et chr$(37) sans savoir pourquoi mais on me l'avait donné pour un mbx antérieur et cela semblait fonctionner alors je le remets ici

Hors ligne

 

#8 Fri 05 August 2011 11:59

ebiseau
Participant actif
Date d'inscription: 6 Sep 2010
Messages: 98

Re: probleme sql map basic

c'est bon j'ai résolu mes problèmes grâce en partie à ton aide, merci :-)

Hors ligne

 

#9 Fri 19 August 2011 15:58

ducroq
Participant occasionnel
Lieu: Toulouse
Date d'inscription: 10 Apr 2007
Messages: 22

Re: probleme sql map basic

Bonjour,
Tu pourrais tu donner ta solution ebiseau. Elle m' intéresse!

Moi je n'arrive pas a mettre la variable dans le non de la table (après into)

Je m'explique :
Je voudrais réaliser le select en boucle en utilisent une variable qui me permet d'enregistrer les tables avec un nom incrémenté a chaque passa dans le "FOR/ NEX"

dans mon exemple si je remplace

troncon_+chr$(34)+num_tdeux+chr$(34)+
par
troncon_2

tout marche parfaitement
Je me demande si ce n'est pas un problème de déclaration de variable
faut il que num_tdeux soit déclaré en tant que alias pour pouvoir etre intégré au nom de la table

Mais a ce moment là je ne peut plu incrémenter le nom de mes tables avec

For num_tun = 1 to 4           
num_tdeux = num_tun + 1

SOS merci




Code:

Include "mapbasic.def"

Declare Sub Main

dim num_tun as smallint
dim num_tdeux as smallint
dim sql as string

Sub Main ()

    For num_tun = 1 to 4            
        num_tdeux = num_tun + 1
        
note "num_tun : "+num_tun
note "num_tdeux : "+num_tdeux
    

    sql="Select RE10_060_L_HYDR.Id, RE10_060_L_HYDR.Strahler, RE10_060_L_HYDR.troncon from RE10_060_L_HYDR, troncon_1 where RE10_060_L_HYDR.obj Intersects troncon_1.obj And RE10_060_L_HYDR.troncon < 1 into troncon_+chr$(34)+num_tdeux+chr$(34)+"
    Run command sql
    Browse * From RE10_060_L_HYDR
    Browse * From troncon_2
    Update troncon_+num_tun Set troncon = 2
    next

End Sub

Dernière modification par ducroq (Wed 24 August 2011 09:09)

Hors ligne

 

#10 Mon 29 August 2011 09:38

ebiseau
Participant actif
Date d'inscription: 6 Sep 2010
Messages: 98

Re: probleme sql map basic

bonjour,

essaie tronçon_"+num_tdeux+"

Cela fonctionne t'il ?

Hors ligne

 

Pied de page des forums

Powered by FluxBB