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

GEODATA DAYS 2024

#1 Mon 28 June 2010 14:50

V. Girault
Participant actif
Lieu: Clermont-Ferrand
Date d'inscription: 22 Sep 2005
Messages: 106

[MapBasic 8.5]Problème sur l'existence d'un champ dans une table

Bonjour @ tous !

Le sujet qui m'occupe ici est de créer un champ dans une table, mais avant de le créer, je fais un test de l'existence de ce champ dans ma table. Si celle-ci est trouvée, je veux sortir de ma procédure et passer à la suite du code. Le problème est que le test se fait bien bien mais la sortie de la procédure non. Ca m'avait l'air relativement simple...

Voici le code que j'ai écrit :

Code:

    'Ajout d'une colonne ID à la table qui contiendra ROWID
    '------------------------------------------------------
    Dim I, NBCD as integer
    Dim NbColD as SmallInt
    Dim CnameAttendu as String
    
    name = "PARTIEL_OPERATIONS"

    If istableopen(name) then
        NbColD=TableInfo(name, TAB_INFO_NCOLS)
        For NBCD = 1 to NbColD
            'note NBCD
            CnameAttendu=ColumnInfo(name, "COL"&NBCD, COL_INFO_NAME)
            'note CnameAttendu
            If CnameAttendu="ID" Then 
                Exit For
                Exit Sub
            End If

            If CnameAttendu<>"ID" Then
                Alter table name (add ID Integer) interactive
                Update name Set ID = ROWID
                Commit table name interactive
                Open table "C:\Documents and Settings\GiraultV\Mes documents\MI\Tables\"+name+ ".TAB"
                Set Map Redraw on
            End If
        Next
    End If
End sub

Je ne pense pas que la ligne

If CnameAttendu<>"ID" Then


pour tester l'existence de mon champ soit académique mais c'est tout ce que j'ai trouvé pour l'instant... Faudrait-il lorsque je créé ce champ dans la table que je le place à une certaine position (premier champ de la table par exemple) pour ensuite ne tester que la valeur de la chaine du champ à cette position ?

Merci beaucoup d'avance pour votre aide....

Hors ligne

 

#2 Mon 28 June 2010 14:56

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

Re: [MapBasic 8.5]Problème sur l'existence d'un champ dans une table

Moi je crois que le bloc de code suivant

Code:

    If CnameAttendu<>"ID" Then
                Alter table name (add ID Integer) interactive
                Update name Set ID = ROWID
                Commit table name interactive
                Open table "C:\Documents and Settings\GiraultV\Mes documents\MI\Tables\"+name+ ".TAB"
                Set Map Redraw on
            End If

devrait être en dehors de la boucle For car sinon su ton premier champ n'est pas "ID"..il va t'en créer un même si tu as un champ "ID" et te retrouve donc avec deux champ ID puis 3 puis 4 ... etc.

JF

Hors ligne

 

#3 Mon 28 June 2010 15:10

V. Girault
Participant actif
Lieu: Clermont-Ferrand
Date d'inscription: 22 Sep 2005
Messages: 106

Re: [MapBasic 8.5]Problème sur l'existence d'un champ dans une table

J'étais en train de réfléchir au fait de passer ma variable champ en Alias lorsque tu m'envoyais ta réponse...

Ca fonctionne effectivement mieux ! Merci beaucoup ! big_smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB