#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