#1 Fri 11 June 2010 12:17
- Simon AILLAUD
- Participant occasionnel
- Date d'inscription: 11 Jun 2010
- Messages: 23
[MapBasic 7.5] Variable ou Champ non défini
Bonjour,
Je suis tout nouvel utilisateur de MapBasic, alors pour parfaire mon initiation, j'essaie de reproduire et d'adapter à mes données des codes trouvés sur le net.
Ici, j'essaie de créer une nouvelle table à partir d'une autre sous une certaine condition dans le but d'apprendre à gérer les Alias.
Ma table en entrée est Freg00 (4 variables : code_reg, nom_reg, surface, pays)
Ma table en sortie devra contenir code_reg et surface.
Mon problème viens de la ligne col_ID_reg = nomTable + "ID_REG"
puisque j'ai en retour l'erreur "Variable ou champ Freg00.ID_REG non défini".
Et je ne vois vraiment pas d'où vient l'erreur.
Voici mon code:
Code:
'----------DECLARATION DES PROCEDURES-------------------------------------------------- Declare Sub Main Declare Function getTable() As SmallInt Declare Sub verificateur Declare Sub creTabSurf '==================================================================================MAIN '----------COMMENTAIRE SUR LE MODULE--------------------------------------------------- 'Procédure principale '-------------------------------------------------------------------------------------- Sub Main Include "C:\Program Files\MapInfo\MapBasic\MAPBASIC.DEF" Create Menu "Gestion Table" As "Extraire surface" HelpMsg "Permet d'extraire les surface des regions." Calling creTabSurf Alter Menu Bar Add "Gestion Table" End Sub '==============================================================================FIN MAIN '==============================================================================getTable '----------COMMENTAIRE SUR LE MODULE--------------------------------------------------- 'Procédure qui permet de choisir une table ouverte '-------------------------------------------------------------------------------------- Function getTable() As SmallInt Dim I as SmallInt Dim ChoixT as String Dim tableChoisie as String Dim tableauTable (10) as String '----------Vérifiaction qu'il y a bien une table d'ouverte: If Numtables() = 0 Then Note "Une table doit être ouverte!!!" Else Note "Il y a bien au moins une table d'ouverte." End If '----------Sélection des tables ouvertes: For I = 1 To Numtables() tableauTAble(I) = TableInfo(I,TAB_INFO_NAME) Next choixT = "" For I = 1 To Numtables() choixT = choixT + tableauTable(I) + ";" Next '----------Boite de dialogue: Dialog Title "Choix de la Table" Control ListBox Title choixT Calling verificateur ID 1 Value 1 Into tableChoisie Position 5,25 Control OKButton ID 2 Disable Control CancelButton ID 3 Control StaticText Title "Choisissez une table: " Position 5,10 getTable = tableChoisie End Function '==========================================================================FIN getTable '==========================================================================Verificateur '----------COMMENTAIRE SUR LE MODULE--------------------------------------------------- 'Procédure qui vérifie si une valeur est lue dans la ListBox '-------------------------------------------------------------------------------------- Sub Verificateur If ReadControlValue(1) Then Alter Control 2 Enable Else Alter Control 2 Disable End If End Sub '======================================================================FIN Verificateur '============================================================================creTabSurf '----------COMMENTAIRE SUR LE MODULE--------------------------------------------------- 'Procédure qui crée la table des surfaces des regions. '-------------------------------------------------------------------------------------- Sub creTabSurf Dim nomTable as String Dim tab as SmallInt Dim tabChamp(50) as String Dim I as Integer Dim champ as SmallInt Dim col_ID_reg as Alias Dim col_surf as Alias Dim val_ID_reg as Integer Dim val_surf as String '----------Selection de la table par menu graphique: tab = getTable() nomTable = TableInfo(tab,TAB_INFO_NAME) '----------Recherche des champs de la table selectionnee: For I = 1 To NumCols(tab) tabChamp(I) = ColumnInfo(tab, "Col" + I, COL_INFO_NAME) Next '----------Creation de la table de destination: Create Table SurfReg(ID_REG Integer, Surf Char(1)) col_ID_reg = nomTable & "." & "ID_REG" col_surf = nomTable + ".SURF" Fetch First From nomTable While Not Eot(nomTable) val_ID_reg = col_ID_reg If val_ID_reg > 50 Then val_surf = col_surf Insert Into SurfReg(ID_REG, Surf) Values (val_ID_reg, val_surf) End If Fetch Next From nomTable Wend End Sub '========================================================================FIN creTabSurf
Merci par avance pour votre aide.
Hors ligne
#2 Fri 11 June 2010 13:36
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 7.5] Variable ou Champ non défini
Bonjour
Ma table en entrée est Freg00 (4 variables : code_reg, nom_reg, surface, pays)
Vous cherchez dans nomTable (la table choisie = Freg00) la valeur des enregistrements du champ "ID_REG"...qui comme vous le dites n'existe pas !!
Hors ligne
#3 Fri 11 June 2010 14:41
- Simon AILLAUD
- Participant occasionnel
- Date d'inscription: 11 Jun 2010
- Messages: 23
Re: [MapBasic 7.5] Variable ou Champ non défini
D'accord merci, je vois ce que vous voulez dire.
Par contre, j'ai repris ce code pour apprendre à manipuler cette gestion de table et les alias, mais je ne vois pas très bien à quel moment je cherche dans nomTable?
Pouvez-vous me l'indiquer svp? Merci.
Hors ligne
#4 Fri 11 June 2010 15:03
- Simon AILLAUD
- Participant occasionnel
- Date d'inscription: 11 Jun 2010
- Messages: 23
Re: [MapBasic 7.5] Variable ou Champ non défini
Je viens de trouver et de comprendre surtout, merci beaucoup!!
Hors ligne