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 12 September 2006 09:18

Vincent Vauchey
Participant assidu
Lieu: saint jean de braye
Date d'inscription: 24 Jan 2006
Messages: 288

Annonce: outil ajout avec ID automatique

bonjour
je debute sur mapinfo

je voudrais savoir si il est possible de crée des id automatique

je voudrais crée une colone ID ( charactere 10) et que lorsque je crée un elément sur ma carte l'objet qui sont des point est un id en automatique

exemple 1-2-3-4-etc.....

cela est il possible si oui comment

par avance merci

Hors ligne

 

#2 Tue 12 September 2006 10:09

Eliane BERTOLOTTI
Participant occasionnel
Lieu: NICE (FRANCE)
Date d'inscription: 7 Sep 2005
Messages: 10
Site web

Re: Annonce: outil ajout avec ID automatique

voici comment je procéderai :
je commence par créer ma couche de points (ou d'objets) par exemple dans la couche dessin
j'enregistre ma couche dessin que j'appelle "mes points"
le tableau associé contient une colonne ID non renseignée (tous ont 0 en principe)
tu peux si tu le souhaite donner un nom plus explicite en rebaptisant ta colonne ID
tu vérifie que ta colone ID est bien de type "Entier"
si besoin tu modifie
tu selection tout dans ta couche "mes points"
tu fais un "mettre à jour colonne"
dans la couche "mes point"
la colonne à mettre à jour est : ID (ou son nouveau nom)
la valeur est une "expression"
et dans l'expression souhaitée tu dis "ROWID"
et le tour est joué
toutes les lignes de ton tableau sont numérotées 1,2,3,4,5 ...

PS : il est possible d'initialiser la numérotation à une valeur précise mais je ne sais plus faire

J'espère malgrè tout avoir peut-être répondu à ta question
Bonne journée et bon courage !

Hors ligne

 

#3 Tue 12 September 2006 10:31

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Annonce: outil ajout avec ID automatique

Bonjour,
D'accord avec la réponse d'Eliane, mais pour le coté "automatique" de la chose je ne vois pas comment faire et je doute même qu'un outil mbx y parvienne. Je n'ai pas souvenir d'en avoir vu lors de mes recherches sur Internet , mais....

Hors ligne

 

#4 Tue 12 September 2006 11:28

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Annonce: outil ajout avec ID automatique

Hello,

Question bête, j'ai un trou, ne peut on pas lancer des commandes à l'ouverture du wor ?
On pourrait imaginer qu'à chaque lancement du wor, la colonne id se mette a jour, nan ?

Je suis très overbooké cette semaine mais en lançant une recherche sur le forum il doit y avoir des infos sur cette piste. A moins qu Maurice n'ait la réponse bien sur wink

Robin.

Hors ligne

 

#5 Tue 12 September 2006 11:40

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Annonce: outil ajout avec ID automatique

Robin a écrit:

Question bête, j'ai un trou, ne peut on pas lancer des commandes à l'ouverture du wor ?
On pourrait imaginer qu'à chaque lancement du wor, la colonne id se mette a jour, nan ?


On peut...mais ça va aussi vite de lancer une mise à jour en fin de numérisation et on n'a pas à éditer de WOR.

Robin a écrit:

Je suis très overbooké cette semaine mais en lançant une recherche sur le forum il doit y avoir des infos sur cette piste. A moins qu Maurice n'ait la réponse bien sur ;)Robin.


Si un mbx existe, il faudrait qu'il se substitue à tout ce que fait MI quand on numérise (c'est déjà lourd) ET qu'il inclue une procédure SelChangedHandler pour déclencher à chaque création d'objet un recalcul du RowID...par rapport à ta solution ou la mienne, je comprend qu'il n'y ait pas eu d'amateur pour se lancer là dedans!!

Hors ligne

 

#6 Tue 12 September 2006 15:38

jakesp
Membre
Lieu: Montreal, QC
Date d'inscription: 28 Sep 2005
Messages: 126
Site web

Re: Annonce: outil ajout avec ID automatique

les réponses vont un peu dans toutes les directions et il serait bon d'y mettre un peu d'ordre. Tout d'abord, les valeurs de Rowid sont celles de la séquence des objets dans l'état de la table. Si cet état est modifié par suppression d'objets et compression de la table, les Rowids seront modifiés. Donc toute mise à jour faite à la fin d'une séance d'ajouts risque de perturber complètement les numéros attribués préalablement et personnellement je la proscrirai.

Une solution possible serait de faire une sélection des objets sans rowid et de faire la mise à jour de la colonne ID de cette seule sélection. Comme il est possible que le dernier ID attribué dans la session précédente soit > à son rowid (suite à une suppression/compression), il ne faut donc pas utiliser Rowid pour cette mise à jour. On pourrait envisager à la rigueur d'aller chercher la valeur du dernier ID (derval) et d'utiliser dans la mise à jour de la sélection (derval + Rowid "dans la sélection").

Ce qui précède donne une idée des problèmes que l'on peut rencontrer pour créer des ID automatiques et PERMANENTS, en bloc ou à la pièce. L'absence d'amateur à programmer une telle fonction comme le remarque Maurice tient je crois beaucoup plus à un manque de spécification ferme de la nature de cet identificateur que d'expertise à le faire.

Pourrait-on commencer à élaborer cette spécification?

Hors ligne

 

#7 Tue 12 September 2006 17:18

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Annonce: outil ajout avec ID automatique

D'accord, l'usage de RowID est peu fiable, sauf à s'entourer des précautions évoquées...et encore!!
Donc on l'oublie, de même qu'un outil de mise à jour à la volée (trop dur).
Resterait à créer un outil minimum qui mettrait à jour une colonne identifiant d'une table, enregistrée et compactée. L'identifiant serait idéalement en entier, pas en caractères (trop dur) et la mise à jour se contenterait d'incrémenter (dans les cellules où la valeur est nulle) des valeurs à partir de la valeur maximum des cellules déjà renseignées.
Je réfléchis en écrivant...mais avec un périmètre ainsi réduit ça parait faisable. Est-ce utile?? A vous de dire !!

Hors ligne

 

#8 Wed 13 September 2006 00:02

jakesp
Membre
Lieu: Montreal, QC
Date d'inscription: 28 Sep 2005
Messages: 126
Site web

Re: Annonce: outil ajout avec ID automatique

Je fais les hypothèses suivantes:

1 - une colonne smallint de la table contient un identificateur numérique unique. Celui-ci peut avoir été créé par initialement par une mise à jour avec Rowid().

2 - les nouveaux id sont attribués séquntiellement à compter du numéro le plus élevé trouvé dans la table.

Le petit programme suivant fonctionne dans ce sens
----------------------------------------------------------------
include "icons.def"
declare sub addpointwithid
declare sub main

dim colid, tabin as string

'=============================
sub main
'=============================
colname="alpha"
tabin="detestable"
alter buttonpad id 2 add
    toolbutton calling addpointwithid drawmode DM_CUSTOM_POINT 
    icon MI_ICON_LETTERS_P cursor MI_CURSOR_CROSSHAIR
end sub
'=============================
sub addpointwithid
'=============================
dim idmax as smallint
dim cmd as string
dim x, y as float
run command "select max("+colname+") from "+tabin+" into sele"
fetch first from sele
idmax=sele.col1+1
set coordsys table tabin
x=commandinfo(1)
y=commandinfo(2)
insert into tabin (obj,colname) values (createpoint(x,y),idmax)

end sub
------------------------------------------------------------

On peut ajouter les boutons jugés nécessaires (ligne, polyligne ...) avec chacun sa propre sub, différant seulement par la façon de créer l'objet correspondant.

Je pense que cette technique permettrait d'éviter tout dédoublement d'ID à condition naturellement de laisser cette colonne "tranquille".

Il faudrait naturellement habiller tout cela pour choisir les noms de la table et de la colonne d'ID que j'ai codés en dur pour le test.

S'il y avait preneur, je pourrais probablement produire un tel outil, mais j'ai besoin de commentaires/idées/confirmations ... avant de m'y lancer.

Jacques Paris

Hors ligne

 

#9 Wed 13 September 2006 10:20

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Annonce: outil ajout avec ID automatique

Commentaire d'un faignant: l'outil envisagé me parait très bien mais presque trop.
Ne suffirait-il pas d'un outil qui met à jour d'un coup une colonne d'identifiants d'une table (quels que soient les types d'objets): on crée classiquement ses objets et à la fin on met à jour leur identifiant ?
Sinon, pour l'outil tel que proposé, ne faudrait-il pas laisser à l'utilisateur une possibilité d'intervenir sur l'identifiant déterminé automatiquement (au prix dans ce cas d'un OK à cliquer à chaque objet)?
Aux usagers potentiels de décider....

Hors ligne

 

#10 Wed 13 September 2006 10:43

jakesp
Membre
Lieu: Montreal, QC
Date d'inscription: 28 Sep 2005
Messages: 126
Site web

Re: Annonce: outil ajout avec ID automatique

Je pensais à ce que le programme offre au début d'une session l'identificateur original comme max(identificateurs existant)+1, l'utilisateur pouvant alors l'accepter ou le remplacer par une valeur supérieure (jamais inférieure). Durant une session d'ajouts, l'identificateur augmente d'une unité quelque soit le type d'objet ajouté.

Une session d'ajouts commencerait par l'identification de la table et de la colonne des ID. Si certains objets n'avaient pas d'ID. une fonction permettraient alors de leur en donner (suivant les mêmes principes que plus haut) avant d'ouvrir la phase d'ajouts.

Je sais, je commence toujours avec une bicyclette et je finis avec une Cadillac, mais j'aime prévoir plus grand. C'est donc le bon moment d'en rajouter ou de changer certains "accessoires"

Hors ligne

 

#11 Thu 14 September 2006 15:53

Vincent Vauchey
Participant assidu
Lieu: saint jean de braye
Date d'inscription: 24 Jan 2006
Messages: 288

Re: Annonce: outil ajout avec ID automatique

merci de toute vos reponces avec la commande eliane ca fonctionne bien merci les autre piste sont a explorer

Hors ligne

 

#12 Tue 26 September 2006 21:34

jakesp
Membre
Lieu: Montreal, QC
Date d'inscription: 28 Sep 2005
Messages: 126
Site web

Re: Annonce: outil ajout avec ID automatique

J'y suis arrivé avec le support de Maurice Nadal. Je viens de terminer un outil qui pourrait répondre à la question. Il crée bien des ID automatiquement en Integer ou Smallint, et traite les alpha de façon limitée: une partie alpha fixe suivie de chiffres (largeur fixe, valeur variable). Je sais que cela ne répond pas à toutes les spéficiations imaginables d'ID alpha, aussi je ne l'offre qu'en version Beta des fois où vous auriez des idées que je pourrais y intégrer.

À vous de jouer maintenant

AddObjectsWithID se trouve sur www.paris-pc-gis.com/Beta/beta.htm le dernier dans la liste

Hors ligne

 

#13 Fri 06 October 2006 11:44

Vincent Vauchey
Participant assidu
Lieu: saint jean de braye
Date d'inscription: 24 Jan 2006
Messages: 288

Re: Annonce: outil ajout avec ID automatique

je viens de tester l'outil de jakesp il est tres bien, juste il bugsur certain nombre avec les disaine exactement
j'ai des id de type 3 fixe qui son 2E- et 4 variable qui commence a 0001 et quand il arive a 10 il met 00110 puis a 100 et 110 d'ou peut venir le probleme sans quoi l'outil est tres tres bien merci

Hors ligne

 

#14 Fri 06 October 2006 12:36

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Annonce: outil ajout avec ID automatique

Un bug, ou un problème d'espace entre parties fixes et variables, ou...le mieux est d'en faire retour à l'auteur
jacques@texte-a-enlever.paris-pc-gis.com

Hors ligne

 

#15 Fri 06 October 2006 15:39

jakesp
Membre
Lieu: Montreal, QC
Date d'inscription: 28 Sep 2005
Messages: 126
Site web

Re: Annonce: outil ajout avec ID automatique

J'ai pu localiser l'erreur et la corriger, je crois. En cours de validation. Annonce très bientôt j'espère

Hors ligne

 

#16 Fri 06 October 2006 15:50

Vincent Vauchey
Participant assidu
Lieu: saint jean de braye
Date d'inscription: 24 Jan 2006
Messages: 288

Re: Annonce: outil ajout avec ID automatique

merci jakesp c'est une vrais petite perle

Hors ligne

 

#17 Mon 09 October 2006 23:21

jakesp
Membre
Lieu: Montreal, QC
Date d'inscription: 28 Sep 2005
Messages: 126
Site web

Re: Annonce: outil ajout avec ID automatique

Voilà testée en bonne santé la dernière version 2.1

Elle est disponible où était l'ancienne, mais vous pouvez aussi essayer une nouvelle page de décharge que j'ai construite sur l'avis de Robin Prest. Encore en développement pour les "sous-pages", mais qu'en pensez-vous? www.paris-pc-gis.com/decharge_mbx.htm

Hors ligne

 

Pied de page des forums

Powered by FluxBB