#1 Thu 19 June 2003 11:17
- Virginie Girault
- Invité
Erreur dans Code MB
Bonjour ! Il m'arrive surement un truc tres bete mais que je n'ai pas encore vu : Dans le code ci-dessous, a la ligne 227, j'ai le msg d'erreur Commande inconnue.
dim Ntable, Nbenr, i as integer, Nom_table as string
dim Serv as string, Code as alias, carto as integer
dim Champ1, Champ2, Champ3, Chemin, img as string
dim A_champ1, A_champ2, A_champ3 as alias
Ntable=ReadControlValue(7603)
While Ntable0
'Selectionner tous ses enregistrements
Nom_table=TableInfo(Ntable,TAB_INFO_NAME)
Champ1 = CODE
Champ2 = ID_CARTO
Champ3 = NUM_INSEE_COM
A_champ1 = Nom_table & . & Champ1
A_champ2 = Nom_table & . & Champ2
A_champ3 = Nom_table & . & Champ3
Browse * from Nom_table
Select A_champ1, A_champ2, A_Champ3
from BDTopo_Com78d, Nom_table where BDTopo_Com78d.obj contains Nom_table.obj
into img
Sachant que la ligne 227 correspond a la ligne from...img , je ne vois pas ou est le probleme. Est-ce que par hasard, ca serait l'appellation BDTopo_Com78d, auquel cas je la passe par une variable, mais..., ca devrait etre bon ?! Merci de vos lumieres.
Ps : Decidement, ce forum est excellent, on ne le dira jamais assez, et ce sont les personnes qui y participent qui y contribuent...
#2 Thu 19 June 2003 14:13
- Pascal Geraut
- Invité
Re: Erreur dans Code MB
Bonjour collegue
pour aller au plus simple, ne pas ecrire dans la ligne de select contains
nom_table.obj
declarer une variable de type alias*
par exemple :
Dim Tab as Alias
Tab = Nom_table+ .obj
Select .... where ... contains Tab into toto
et tout va rentrer dans l'ordre (a priori :)
Cordialement
Pascal GERAUT
DIOG - ITS
CETE de l'Ouest
#3 Thu 19 June 2003 15:46
- Virginie Girault
- Invité
Re: Erreur dans Code MB
Merci de vos precedentes reponses a ma question. Le probleme est regle.
Maintenant, j'en ai un nouveau a vous soumettre. Rappelons les faits. Mon outil liste dans un multi list box toutes les tables qui constituent un .Wor donne. On choisi une, trois ou dix tables et leurs donnees sont exportees au format Txt dans un rep. donnee(pour etre reinjectees dans une base Access). Tout cela marche fort bien. Le tout dernier traitement que je vous ai fourni avec mon mail frais de ce matin doit creer pour tous les enregistrements de la table selectionnee plus haut, une image de ses objets graphiques.
Maintenant, j'arrive a mon nouveau probleme : tout le code est bon et a l'execution, MI me dit que ma table Nom (anciennement Nom_table et renommee selon les bons conseils de chacun...) n'est pas ouverte ! C'est une blague...
Si ma multilist box recense cette table, c'est qu'elle est ouverte ! J'ai affaire a un micro farceur... En faisant un Note STOP sur differents endroit de l'algo, j'ai repere que MI faisait cette erreur sur desormais la ligne suivante :
sCmd = Select A_champ1, A_champ2, A_Champ3 from Nom, BDTopo_Com78d where BDTopo_Com78d.obj contains Nom_table.obj into img
Run command sCmd
Note STOP
en ayant toutefois pris soin de declarer ceci :
Sub H_traiter_img
dim sCmd as string
dim Ntable, Nbenr, i as integer, Nom as string
dim Serv as string, Code as alias, carto as integer
dim Champ1, Champ2, Champ3, Chemin, Chemin2, img as string
dim A_champ1, A_champ2, A_champ3 as alias
Ntable=ReadControlValue(7603)
Chemin2 = C:Mes documentsSpeedyMapinfoDigitalisationTables assembleesTables couleur assemblees + INSEE
While Ntable0
'Selectionner tous ses enregistrements
Nom=TableInfo(Ntable,TAB_INFO_NAME) 'Nom de la table contenue dans la liste multi-selection
Si vous avez des idees... Merci d'avance !
#4 Fri 20 June 2003 15:34
- Virginie Girault
- Invité
Re: Erreur dans Code MB
Mon precedent probleme a ete elucide. Merci beaucoup.
Voici un autre piege de MB. Le but est de sauver une table dont le nom se constitue par passage de variable, et celle-ci est ensuite sauvegardee dans un rep particulier. Voila le code.
Les declarations de vars :
dim Serv as string, Code as alias, carto as integer
dim Champ1, Champ2, Champ3, Chemin, Chemin2, img as string
dim A_champ1, A_champ2, A_champ3 as alias
puis l'algo :
Ntable=ReadControlValue(7603)
While Ntable0
Nom=TableInfo(Ntable,TAB_INFO_NAME) 'Nom de la table contenue dans la liste multi-selection
Champ1 = CODE
Champ2 = ID_CARTO
Champ3 = NUM_INSEE_COM
A_champ1 = Nom & . & Champ1
A_champ2 = Nom & . & Champ2
A_champ3 = Nom & . & Champ3
Fetch first from Nom
Serv = A_champ1
Code = A_champ2
img = Code + Serv
...
sCmd2 = Commit Table img as C:ExportImages + +img+ TYPE NATIVE
Run Command sCmd2
Fetch next from Nom
Deja, le chemin lui posait probleme au debut, mais je l'ai regle. Par contre, il butte sur la var img, constituee elle-meme de 2 valeurs : Code et Serv qui recuperent respectivement les valeurs 5 et PIG_I4. Je dois donc obtenir normalement 5PIG_I4 en nom de table, et bien la valeur de Serv ne lui plait pas du tout. Serait-ce l'underscore ? Je ne peux malheureusement pas deroger a cette valeur de variable pour le nom de ma table, sinon, j'aurais evite le probleme, sachant MB particulierement tatillon. Merci a tous d'avance. O rage, o desespoir et syntaxe maudite !
#5 Wed 25 June 2003 11:21
- Virginie Girault
- Invité
Re: Erreur dans Code MB
Re-bonjour ! Oui, j'y reviens pour l'une des heureuses participatrices du forum.
Je suppose que vous avez suivi les differentes reponses des collegues eclaires du forum, donc vous n'avez pas perdu le fil. Voici donc, apres moultes perigrinations, la syntaxe exacte de l'ordre d'enregistrement de la table :
Commit Table pipo as C:ExportImages +img TYPE NATIVE
et non :
sCmd2 = Commit Table img as C:ExportImages + +img+ TYPE NATIVE comme prealablement. En fait, je me compliquais la vie en essayant de passer l'ordre sous forme de chaine par un Run command sCmd2. J'ai toutefois pris soin de supprimer carrement l'underscore dans la var img, source de problemes insolubles. Le nom de la table devient donc 5pigi4. Je pense que je vous ai tout dit, mais si vous avez besoin d'explications plus completes, je peux vous envoyer un mail, a condition de me laisser votre adresse mail.