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 Mon 12 July 2004 18:05

Maud Gaide
Invité

MapBasic: creation de 2 lignes d'enregistrements!!!

Bonjour,

j'ai cree une boite de dialogues pour associer des infos a un point dessine sur une carte mais dans ma table il me creait une ligne pour l'identifiant du point et les autres champs sont vides et une ligne ou l'identifiant est 0 et les champs sont remplis par les infos que j'ai saisie avez vous une idee de comment je doit faire pour enregistrer mes infos dans la ligne ou il y a l'identifiant de mon point?
Voici mon code:
Sub recupcoord

W_CoordX = CommandInfo(CMD_INFO_X)
W_CoordY = CommandInfo(CMD_INFO_Y)

Set Coordsys Table BDphoto
Update BDphoto Set COORDX = CentroidX(obj)
Update BDphoto Set COORDY = CentroidY(obj)

End sub
'-----------------------------enregistrement des informations saisies---------------------------
Sub enregistrement
Update BDphoto Set ID = Rowid

Dim W_ID as integer
Dim ID as integer

Select Max(ID) from BDphoto
Fetch First from BDphoto
W_ID = ID + 1

Insert into BDphoto
( THEME , SSSTHEME , DIRECTIONvue , Projet , Ouvrage , OBSERVATIONS , REF_class , Dateprisedevue )
Values
(ReadControlValue(7), ReadControlValue(25), ReadControlValue(31), ReadControlValue(27), ReadControlValue(26), ReadControlValue(28), ReadControlValue(30), ReadControlValue(32))
Commit Table BDphoto

End sub

Merci d'avance

 

#2 Thu 15 July 2004 11:41

Dariuspol
Invité

Re: MapBasic: creation de 2 lignes d'enregistrements!!!

C'est normal qu'il te crée une ligne ou l'identifiant est 0 et les champs sont remplis par les infos saisies puisque tu lui indique une commande Insert . Pour enregister tes donnees dans la ligne correspondant a ton point il faut que tu fasses un update .

en clair pour creer une nouvelle ligne correspondant a ton nouveau point voici les instruction :

insert into ma_table (ma_colone) values (ID_point_nouveau)
commit ma_table

ensuite tu lis demande combien de ligne fais ta table apres enregistrement

update ma_table set (liste de tes colonnes) where rowid = nb_de_ligne_de_ta_table.
commit ma_table.

et normalement c'est bon.
attention, si ta table est particulierement lourde les commit peuvent prendre pas mal de temps.

en esperant avoir repondu a ta question

 

#3 Mon 19 July 2004 12:23

Maud Gaide
Invité

Re: MapBasic: creation de 2 lignes d'enregistrements!!!

Le probleme est que quand je fait une commande Update il me met a jour toute mes lignes, je me retrouve avec toute les lignes identiques!!!!
en plus je ne peut pas savoir quel ID aura mon nouveau point ce champ est incremente dans le programme!
je ne sais pas comment lui dire que je crée un point qui a des coordonnees X,Y (enregistrees dans des champs COORDX et COORDY ) ce qui crée une ligne d'enregistrement et je voudrais que mes infos soient enrgistrees dans cette meme ligne, la derniere ligne d'enregistrement dans la table!

Si qq a une idee je veux bien!
merci d'avance

 

#4 Mon 19 July 2004 13:44

Dariuspol
Invité

Re: MapBasic: creation de 2 lignes d'enregistrements!!!

Effectivement si tu fais un update sans preciser de where Id ca va modifier toute tes lignes !!!

normalement si tu utilise ce que je t'ai donne il y a quelques jours ca marche.

methode :

tu crees ton nouveau point : son ID est cree automatiquement par MApBasic. Tu enregistre ta table.

puisse que tu as inserer ce nouveau point la derniere ligne correspondant a ton nouveau point. Donc tu lui demande le nombre de ligne que fais ta nouvelle table.

enfin tu fais un update (avec toutes tes valeurs a inserer) et la condition where rowid = nombre de ligne totale de ta table.

et la ca marche !!!! j'ai utilise cette methode des dizaines de fois et je n'ai jamais eu de probleme.

 

#5 Fri 12 June 2015 17:25

Kikossa
Participant occasionnel
Date d'inscription: 18 May 2015
Messages: 10

Re: MapBasic: creation de 2 lignes d'enregistrements!!!

salut mais commet récupérer le ID de nouveau point

Hors ligne

 

#6 Thu 22 October 2015 22:44

CRIGBAB
Participant assidu
Lieu: Bayonne
Date d'inscription: 14 Nov 2005
Messages: 180

Re: MapBasic: creation de 2 lignes d'enregistrements!!!

Bonsoir,

Je ne sais pas si ma réponse très tardive servira pour votre cas mais pour tous ceux confrontés à ce problème voici la solution
si tu crées le point avec les infos voici la syntaxe:

Insert Into bidon (obj, info1)
    Values ( CreatePoint(1334900,2264945),"test")

Il y a alors création du point et renseignement du champ info1 avec la valeur "test" .


Pour mettre à jour la définition de l'objet dans une occurence existante alors la solution est la suivante

Update bidon
    Set obj = CreatePoint(xcoord, ycoord)
en ajoutant la condition suivante seule l'objet concerné se verra modifié.
[ Where RowID = idnum ]

Dans le cas où tu as deux colonnes avec les X et Y tu peux les utiliser pour recréer tes points avec les infos tabulaires inchangées.


J'utilise cette technique pour déplacer des objets ponctuels par table entière. C'est extrêmement efficace.

Cdlt

Hors ligne

 

Pied de page des forums

Powered by FluxBB